2016-07-27 2 views
5

병합 커밋을 해결하는 방법이 있다면 실제로 병합하지 않고 두 가지 git 가지를 알고 싶을뿐입니다.git : 병합을 수행하지 않고 병합 충돌을 해결합니다.

가정 할 때, 나는 "featureMy"브랜치를 가지고 있습니다; 내 동료가 또 다른 지점 "featureHis"를 만들었습니다. 두 가지 브랜치는 "master"브랜치에서 작성됩니다.

내 동료가 지점 "featureHis"에 대한 병합 요청을 마스터에 생성했습니다. 그런 다음 master에 "featureMy"라는 병합 요청을 만들 때 "featureHis"가 병합 된 후에 마스터와 충돌하지 않도록하고 싶습니다.

일반적으로 "featureHis"를 "featureMy"에 병합합니다. 그러나 이것은 "노이즈"로 추가 병합 커밋이 있고 내 병합 요청에 "featureHis"의 변경 내용이 포함되어 있기 때문에 만족스럽지 않습니다.

병합 커밋을 만들지 않고 병합 충돌을 해결할 수있는 방법이 있습니까?

종류는 합병 대신 리베이스를 사용하는 것입니다 커밋 가진 병합을 피하기 위해

+0

충돌이 있는지보기 위해서는'--no-commit'을 할 수 있습니다. http://stackoverflow.com/a/501461/3000179 –

답변

5

한 표준 방법을 간주한다.

master:  A 
featureMy: A -- B 
featureHis: A -- C 

만이 두 가지가 둘 중 하나가 먼저 master로 병합합니다 다음, master에서 현존하는 것을 가정하면 다음과 같은 시나리오를 생각해보십시오. 먼저 거기에 도착하는 것이 당신의 동료라고 가정 해 봅시다. 그러면 다이어그램은 다음과 같습니다.

master:  A -- C 
featureMy: A -- B 
featureHis: A -- C 

동료의 커밋은 이제 master 분기입니다. 이제 병합 기반 워크 플로를 사용하는 경우 먼저 master을 분기에 병합 한 다음 분기를 master으로 다시 병합합니다.

master:  A -- C -- E 
featureMy: A -- B -- D 
featureHis: A -- C 

이제 두 지사 master 지점 추악한 병합 그들에 커밋이 :이 될 것입니다.

master:  A -- C 
featureMy: A -- C -- B' (B' indicates that this a new commit, not B) 
featureHis: A -- C 

이제 지점 featureMy 실제로 master 지점의 전방 입니다 : 당신이 한 경우, master 지사를 리베이스, 당신은 남아있을 것입니다. master 위에 직접 커밋을 푸십시오. 충돌은 없습니다. 이것은 다음 그림 결과 : 더 병합 어디서나 범하지 이 있습니다

master:  A -- C -- B' 
featureMy: A -- C -- B' 
featureHis: A -- C 

공지있다. 실제로 featureMy 분기와 master은 모두 과 동일합니다. 선형 이력이 있습니다.

긴 라이브 git rebase.

+0

필자는 현재 워크 플로우를 따르기 위해 먼저 featureMy 브랜치를 featureHis에 리베이스하고 충돌을 해결해야한다고 덧붙였다. 'featureHis' 브랜치가'master'에 병합 된 후에'featureMy'를'master'에 리베이스하고'master'에 병합 할 수 있습니다. – geoji

관련 문제