문제

저는 프로젝트를 위해 소규모 개발자 팀과 함께 git 및 github를 사용해 왔습니다.나는 우리가 제대로 하고 있지 않다고 생각하지 않을 수 없습니다.다른 사람들이 프로젝트 내에서 이 워크플로를 어떻게 사용하는지 듣고 싶습니다.

우리가 그것을 사용하는 방법:각 변경 전에 분기하고 마스터로 다시 병합하고 로컬로 커밋한 후 github 저장소로 푸시합니다.그런 다음 테스트 환경으로 SSH를 통해 접속하고 github 저장소의 마스터 브랜치를 가져옵니다.우리는 잘 파악하지 못했습니다 rebase, fetch 또는 tagging 바로 지금.

내가 사용하고 싶은 방법:다른 서버로 SSH를 통해 연결하고 "1단계"와 같은 특정 태그가 지정된 버전을 서버로 가져올 수 있기를 원합니다.이것이 가능합니까, 아니면 두 개의 다른 github 저장소가 필요합니까?

당신은해야합니까? git pull웹 서버에 대한 특정 분기를 생성하거나 새 별칭을 생성하여 git push 에게?

하나의 Git 저장소 내에서 릴리스 후보 또는 환경(테스트, 개발, 프로덕션)을 제어할 수 있습니까?아니면 여러 개가 필요합니까?

당기는 것이 해결책이라면, 특정한 것을 당길 수 있습니까? tag ?

도움이 되었습니까?

해결책

기본적으로 하나의 "중앙" GitHub 저장소를 사용하면 매우 잘 작동할 수 있습니다.

  • 태그는 변경할 수 없는 포인터이므로 테스트 또는 프로덕션 환경으로 체크아웃하기 위해 언제든지 사용(및 푸시)할 수 있습니다.이를 통해 일부 검증이 수행될 수 있지만 일반적으로 개발에는 사용되지 않습니다.
  • 브랜치를 가져오면 해당 브랜치 내에서 몇 가지 발전을 이룰 수 있고(코드가 프로덕션 환경에 있을 때 일부 버그 수정 및 조정으로 인해) 다른 모든 개발자의 저장소에 대해 다시 푸시하여 고려할 수 있습니다.

따라서 해당 서버에서 수행하는 작업에 따라 다릅니다.검증(승인 또는 거부 상태)만 또는 추가 개발도 가능합니다.
모든 경우에 적절한 명명 규칙이 있는 태그는 기록에서 특정 커밋을 추적하는 데 유용하지만 개발 노력을 분리해야 할 때마다 분기가 필요합니다.

다른 팁

읽기 프로 git 책. 당신은 1 년 동안 git man 페이지를 읽을 수 있지만 여전히 얻지 못합니다. Man Pages를 읽음으로써 Git을 배우는 것은 사전을 읽어 새로운 언어를 배우는 것과 같습니다. 이 책은 당신이 당신이 git로 가질 수있는 소수의 워크 플로를 가르쳐 줄 것입니다.

Github에서는 회사에 하나의 계정을 사용합니다. 여기서 "축복받은"코드가 살고 있습니다. 그런 다음 아직 안정적이지 않은 일을하는 개인 포크를 유지합니다. 내 현지 기계에서 나는 하나의 리포지토리로 둘 다 처리하므로 마스터는 축복받은 코드 (그리고 회사 계정으로 밀고)이며 다른 모든 지점은 내 포크를위한 것입니다. 다음은 내 .git/config의 일부입니다.

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = git@github.com:xiongchiamiov/fourU.git
[branch "hacking"]
        remote = origin
        merge = refs/heads/hacking
[branch "editor"]
        remote = origin
        merge = refs/heads/editor
[branch "problem-utils"]
        remote = origin
        merge = refs/heads/problem-utils
[branch "tests"]
        remote = origin
        merge = refs/heads/tests

[remote "trunk"]
        fetch = +refs/heads/*:refs/remotes/trunk/*
        url = git@github.com:xyztextbooks/fourU.git
[branch "master"]
        remote = trunk
        merge = refs/heads/master

회사 Repo에 대한 커밋 권한이 있으므로 한 지점에서 다른 지점에서 다른 지점으로 Comming을 병합하고 적절한 위치로 밀어 넣을 수 있습니다. 이제 별도의 리포지토리는 확실히 필요하지 않지만, 이것은 오픈 소스 프로젝트이기 때문에, 나는 "공식"레포에 내 탄젠트가 만든 임의의 분기가 없도록하고 싶습니다. 버전을 얻을 수있는 지점에 도달하면 각 버전 (0.1, 0.1.1, 0.2 등)에 대한 태그가있는 0.x 브랜치가 있습니다. Github은 파일의 타르 볼을 자동으로 생성하기 때문에 특히 유리합니다. 각 태그에서 특정 버전을 전체 기록이 필요없는 기계로 끌어내는 데 적합합니다.

Github 블로그를 읽어야합니다. 그들은 배포 워크 플로우를 설명하는 멋진 게시물을 가지고있었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top