지점으로 GIT 병합 마스터


48

나는 새로운 지사에서 새로운 기능을 개발해 왔으며, 한편으로는 제 지사의 지사에서 약간의 변화를 저질렀습니다.

새 기능이 완료되면 너무 많은 병합 충돌이 발생하지 않도록 마스터 분기를 새 분기로 병합하여 최신 상태로 유지할 수 있습니까?


git-merge를 사용해 보셨습니까? 여기서 도와 주세요 .
karatedog

답변:


55

당신도 할 수 있습니다 git merge master또는 git rebase master,이 경우 내가 선호하는 자식 REBASE를 .

git rebase피처 브랜치의 변경이 마스터 브랜치의 변경을 기반으로 한 것처럼 보이기 때문에 버전 그래프가 더 단순 해집니다.

로부터의 예를 촬영 자식 REBASE 설명서 , git rebase master지점에서 feature:

      A---B---C feature                             A'--B'--C' feature
     /                   --rebase-->               /
D---E---F---G master                  D---E---F---G master

그러나 git rebase이전 커밋 A, B, C는 이제 새로운 커밋 A ', B', C '에 F를 더한 F로 대체되므로 분기가 분배되지 않았거나 다운 스트림 혼란과 추가 작업이있을 때에 만 적합합니다. 그리고 전에는 없었던 G.

git rebase master분기 후 실제 결과 feature는 다음과 같습니다.

      ( A---B---C )
       /
      /       A'--B'--C' feature
     /       /
D---E---F---G master

커밋 A, B, C는 리베이스 이후 매달려 git reflog feature있습니다.

누군가가 지점을 가져 왔거나 어딘가에 밀어 넣은 경우 다른 쪽 끝에 혼란과 추가 작업을 피하기 위해 대신 지점으로 병합해야합니다. 업스트림 리베이스에서 복구를 참조하십시오 .

이것은 git merge master분기 의 결과입니다 feature.

      A---B---C feature                    A---B---C---M feature
     /                   --merge-->       /       ,---’
D---E---F---G master                 D---E---F---G master

또는 git merge featurebranch master에있는 경우 다음과 같습니다.

      A---B---C feature                    A---B---C feature
     /                   --merge-->       /         \
D---E---F---G master                 D---E---F---G---M master

리베이스를 선호하는 이유와 그 차이점을 설명해야합니다. Rebase는 선형 이력을 만듭니다.이 질문에 맞지 않을 수 있습니다.
Andreas Rehm

잘 이해하면 확인 : 새 기능이 아직 완료되지 않은 경우 마스터 브랜치를 체크 아웃하고 완료된 경우 리베이스를 확인해야합니까?
mnml

기능 분기가 체크 아웃 된 상태에서 수행 git rebase master하면 기능 분기의 변경 사항을 "리베이스"하여 마스터 분기의 변경 사항을 "기반으로"합니다. 마스터 브랜치의 변경 사항이 기능 브랜치의 변경 사항과 충돌하면 git은이를 해결하고 계속하거나 건너 뛰거나 중단하도록 요청합니다. 확실하지 않은 경우 테스트 브랜치를 체크 아웃하여 시험해 볼 수 git checkout -b test-feature feature있습니다 (기능 브랜치의 이름이 "기능"이라고 가정).
Christoffer Hammarström

나는 rebase를했지만 다른 컴퓨터에서 가져 왔을 때 더 이상 분기를 볼 수 없습니다 : git checkout newfeature / git rebase master
mnml

2
"내 지점을 더 이상 볼 수 없다"는 것은 무엇을 의미합니까? 어쨌든, git rebase지점이 배포되지 않은 경우에만 사용해야합니다. 새로운 지점이라고 말한 이후의 경우라고 가정했습니다. 죄송합니다. 내가 연결된 문서 에서 업스트림 리베이스 에서 복구를 참조하십시오 . git merge대신 사용해야 합니다. git reflog다시 가져 오려면 이전 피처 분기 헤드를 찾는 데 사용할 수 있습니다 .
Christoffer Hammarström
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.