GIT을 사용하여 프로젝트에서 작업하는 여러 사람 관리


32

나는 GIT / GitHub에 매우 익숙하다 (어제부터 시작된 새로운 것). Github을 사용하여 동일한 프로젝트에서 작업하는 여러 사람을 관리하는 가장 좋은 방법이 무엇인지 알고 싶습니다. 현재 저는 네 명의 개발자와 하나의 프로젝트를 관리하고 있습니다.

  1. 워크 플로를 진행하고 모든 것이 동기화되도록하려면 어떻게해야합니까?

    (참고 : 모든 개발자는 하나의 범용 계정을 갖습니다.)

  2. 각 개발자는 서로 다른 지점에 있어야합니까?

  3. 같은 파일로 작업하는 두 사람을 처리 할 수 ​​있습니까?

자세한 답변을 게시하십시오. 나는 수줍은 독자가 아닙니다. 나는 이것을 잘 이해해야한다.


7
모든 개발자를위한 하나의 계정? 그것은 효과가있을 수 있지만 가장 좋은 생각은 아닙니다.
marstato


GitFlow트렁크 기반 개발살펴볼 가치가 있습니다 . 개인적으로 나는 후자와 함께 큰 성공을 거두었습니다
J Lewis

답변:


29

모든 개발자가 리포지토리에 액세스 할 수있는 경우 특별한 작업을 수행 할 필요가 없습니다. 리포지토리에서 변경 사항을 가져 와서 자체 변경을 수행하고 로컬로 커밋 한 다음 작업이 진행되면 공개 리포지토리로 다시 푸시합니다.

반면에 리포지토리에 책임이있는 한 명 (또는 소수)의 개발자가 있고 다른 한 명은 이에 대한 패치를 제공하고 있습니다. 그들 각각이 레포를 자신의 계정으로 복제하게하고 그들이 메인 리포지토리로 변경하고자 할 때 풀 리퀘스트를 보내도록합니다.

원하는 경우 특정 기능에 대한 작업을 위해 특정 복제본을 만들 수도 있습니다. 끌어 오기 요청과 동일한 워크 플로를 사용하여 기능이 완료되면 기본 리포지토리로 변경 내용을 가져옵니다.

"모든 개발자가 하나의 유니버설 계정을 갖게된다"고 말하면 모든 개발자가 하나의 GitHub 계정을 공유하고 리포지토리에서 동일한 커미터로 표시된다는 것은 나쁜 생각입니다. 모든 사용자가 커밋 액세스 권한을 가지려면 별도의 계정을 만들고 공동 작업자로 설정하십시오.

특정 질문에 관해서는 :

  1. 아니요, 커밋이 두 개 이상 필요한 기능, 수정 사항 등에는 분기를 사용하십시오. 둘 이상의 개발자가 동일한 지점에서 작업 할 수 있습니다.

  2. git은 충돌을 잘 처리하므로 사람들이 동일한 파일을 작업하는 데 아무런 문제가 없습니다. 둘 이상의 구성원이 편집 한 파일에 근본적인 변경 사항이있는 경우 충돌 해결이 항상 사소한 것은 아닙니다. 그러나 이것은 함께 이야기함으로써 극복 할 수없는 것은 아닙니다. 버전 관리는 통신을 대체하지 않습니다.

행운을 빕니다!


당신이 만든 몇 가지 요점은 정말 눈을 뜨고 있습니다. 감사합니다!
badZoke

도움이된다면 Hapy. Git과 DVCS는 익숙해 져야하지만 익숙해지면 매우 유연합니다.
harald

고마워 한 가지 구체적인 질문이있었습니다. 동일한 지점에서 여러 개발자가 작업하는 경우 개발자 중 한 명이 변경하고 작업 지점으로 푸시 할 때마다 나머지 개발자가 변경 사항을 가져와야합니다 (최신 코드가 로컬로 작동하도록하려면)?
Eswar Rajesh Pinapala

아니요, 매번 동기화하지 않으려는 경우에만 가능합니다. 지점의 로컬 사본을 개인 지점으로, 업스트림 지점을 병합하려는 지점으로 고려하십시오. git fetch upstream뒤에 오는 것을 사용하면 git merge upstream/branch로컬 커밋 기록을 다시 쓰지 않고 동기화해야합니다. 이것이 문제가되지 않는 경우, 단순히 git pull --rebase로컬 푸시되지 않은 변경 사항을 업스트림 브랜치의 상단으로 옮기십시오.
harald

@badZoke .... 당신이 당신의 3 번째 질문을 처리하기 위해 무엇을했는지 (동일한 파일을 작업하는 2 명 처리) ...
Moumit

25

우리는 2 명의 개발자와 함께 일하며이 워크 플로우를 사용합니다.

  • Github에는 마스터 브랜치와 dev 브랜치가 있습니다.
  • 마스터 브랜치는 프로덕션과 동일하거나 배포 준비 코드를 포함합니다.
  • dev 브랜치는 마스터보다 앞서 있으며 현재 작업중 인 모든 새로운 코드를 포함합니다.
  • 로컬에서 우리는 dev 브랜치에서 작업하고 무언가가 준비되면 github으로 푸시합니다.
  • 다른 개발자는 새로운 코드를 푸시하기 전에 개발자 브랜치에서 새로운 변경 사항을 가져옵니다.
  • 개발 브랜치가 좋으면 마스터 브랜치와 병합
  • 지역적으로 우리는 여러 가지 기능 지점 발행 지점 등을 가지고 있습니다.

1
멋지고 간단합니다. 고마워요! 복잡한 작업으로 이동하기 전에이 작업부터 시작하겠습니다.;)
badZoke

다른 개발자가 새로운 변경 사항을 가져올 때 코드를 푸시하기 전에 새로운 변경 사항이 이미 변경 한 코드를 변경하면 어떻게됩니까?
wayofthefuture

+1, 이것은 실제로 가장 간단하고 완벽하게 작동합니다. 사용중인 것을 단순화 된 gitflow라고합니다 : marcgg.com/assets/blog/git-flow-before.jpg
Jelle

5

여기에 텍스트 답변 만 표시되므로 처음에는 멋진 gitflow의 그림을 게시 할 것이라고 생각했습니다. 그림은 천 단어 이상을 설명합니다.

단순화 된 Gitflow

  • 이 흐름은 연속 배포에도 적합합니다.
  • 마스터 브랜치에는 현재 프로덕션 서버에서 실행중인 코드가 포함되어 있습니다.
  • 개발 브랜치에는 현재 스테이징 / 테스트 서버에서 실행중인 코드가 포함되어 있습니다.

+1, git flow 또는 이와 유사한 것이 아마도이 질문에 대한 정답 일 것입니다.
Maybe_Factor

0

나는 3 명의 다른 개발자들과 일하고 있으며, 우리는 이것으로 꽤 어려움을 겪습니다. 개발자는 때때로 아직 커밋되지 않은 프로덕션에 커밋을 푸시하여 변경 사항에 다른 커밋을 가져온 다음 프로덕션에 푸시합니다. 버전 브랜치는 우리에게 잘 작동하는 것 같습니다. 따라서 버전 1.0이 현재 안정적인 버전 인 경우 v1.1 개발을위한 분기를 만듭니다. 개발자는이 분기에서 변경을 수행합니다. 테스트 서버는이 지점을 확인하고 필요에 따라 변경 사항을 가져옵니다. v1.1의 모든 기능이 준비되고 테스트가 완료되면 v1.1을 master 및 push와 병합합니다. 지점을 사용하면 개발자 팀 A는 v1.1에서 작업 할 수 있고 개발자 팀 B는 v1.2에서 작업 할 수 있습니다. 두 팀은 서로 영향을 미치지 않고 작업 할 수 있습니다. 팀 A가 B가 사용할 수있는 것을 개발하면

또한 즉각적인 변경에 사용되는 핫픽스 분기도 사용합니다.

다음은 이것이 어떻게 보이는지에 대한 링크입니다. http://nvie.com/img/git-model@2x.png


의도 한대로 git flow를 실제로 구현하고있는 것처럼 들리지 않습니다. 각 독립적 인 기능을 분할하거나 각 릴리스가 아닌 자체 분기로 수정하는 것입니다.
Brad Thomas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.