여기에 대부분의 답변은 깨끗한 작업 디렉토리와 여러 대화 형 단계 (스크립팅에 좋지 않음)가 필요하거나 모든 경우에 작동하지 않습니다 (예 : 대상 분기에 현저한 변경 사항을 이미 가져온 과거 병합 또는 체리 픽 같은.
master
브랜치 develop
로 합병 하면 브랜치 에서 어떤 변화가 일어날 지 실제로 보려면 :
git merge-tree $(git merge-base master develop) master develop
그것은 배관 명령이기 때문에, 당신이 의미하는 바를 추측하지 않으므로 명시 적이어야합니다. 또한 출력물을 채색하거나 호출기를 사용하지 않으므로 전체 명령은 다음과 같습니다.
git merge-tree $(git merge-base master develop) master develop | colordiff | less -R
— https://git.seveas.net/previewing-a-merge-result.html
(링크에 David Normington에게 감사드립니다)
추신:
병합 충돌이 발생하면 다음과 같이 출력에 일반적인 충돌 마커와 함께 표시됩니다.
$ git merge-tree $(git merge-base a b ) a b
added in both
our 100644 78981922613b2afb6025042ff6bd878ac1994e85 a
their 100644 61780798228d17af2d34fce4cfbdf35556832472 a
@@ -1 +1,5 @@
+<<<<<<< .our
a
+=======
+b
+>>>>>>> .their
@dreftymac 사용자는 좋은 지적을합니다. 이것은 상태 코드에서 쉽게 파악할 수 없기 때문에 스크립팅에 적합하지 않습니다. 상황에 따라 충돌 마커가 크게 다를 수 있으므로 (삭제 및 수정 등) 그 리핑하기가 어렵습니다. 조심하십시오.
git merge
와git reset --keep HEAD@{1}
나는 결과가 마음에 들지 않으면.