다음과 같은 경우를 보자.
토픽 브랜치에 대한 작업이 있으며 이제 마스터로 다시 병합 할 준비가되었습니다.
* eb3b733 3 [master] [origin/master]
| * b62cae6 2 [topic]
|/
* 38abeae 1
마스터에서 병합을 수행하고 충돌을 해결하면 다음과 같은 결과가 나타납니다.
* 8101fe3 Merge branch 'topic' [master]
|\
| * b62cae6 2 [topic]
* | eb3b733 3 [origin/master]
|/
* 38abeae 1
이제 병합에 어느 정도 시간이 걸렸으므로 다른 가져 오기를 수행하고 원격 마스터 분기에 새로운 변경 사항이 있음을 알 수 있습니다.
* 8101fe3 Merge branch 'topic' [master]
|\
| * b62cae6 2 [topic]
| | * e7affba 4 [origin/master]
| |/
|/|
* | eb3b733 3
|/
* 38abeae 1
마스터에서 'git rebase origin / master'를 시도하면 모든 충돌을 다시 해결해야하며 병합 커밋도 손실됩니다.
* d4de423 2 [master]
* e7affba 4 [origin/master]
* eb3b733 3
| * b62cae6 2 [topic]
|/
* 38abeae 1
병합 커밋을 리베이스하는 깔끔한 방법이 있습니까? 그래서 아래에 표시된 것과 같은 히스토리로 끝납니다.
* 51984c7 Merge branch 'topic' [master]
|\
| * b62cae6 2 [topic]
* | e7affba 4 [origin/master]
* | eb3b733 3
|/
* 38abeae 1
git config --global pull.rebase preserve
rebase 동안 병합 커밋을 항상 보존하기 위해
git --rebase-merges
부터는 이전을 대체 할 것 git --preserve-merges
입니다. 참조 정확하게 망할 놈의는 "무엇을 rebase --preserve-merges
"할 (왜?)
--preserve-merges
더 이상 사용되지 않습니다. 사용git rebase --rebase-merges origin/master
git rebase --preserve-merges origin/master