다음 상황을 고려하십시오.
- 자식 저장소의 복제본이 있습니다.
- 로컬 커밋이 있습니다 (커밋되지 않은 커밋)
- 원격 저장소에 아직 조정하지 않은 새 커밋이 있습니다.
그래서 이런 식으로 :
git pull
기본 설정으로 실행 하면 다음과 같은 결과가 나타납니다.
git이 병합을 수행했기 때문입니다.
그러나 대안이 있습니다. pull 대신 rebase를 수행하도록 지시 할 수 있습니다.
git pull --rebase
그리고 당신은 이것을 얻을 것입니다 :
내 생각에, rebased 버전은 코드와 기록을 모두 깨끗하게 유지하는 데 주로 도움이되는 많은 장점이 있으므로 git이 기본적으로 병합을 수행한다는 사실에 약간 충격을 받았습니다. 예, 지역 커밋의 해시가 변경 될 것입니다. 그러나 이것은 당신이 얻는 더 간단한 역사를 지불하는 작은 가격 인 것 같습니다.
결코 이것이 나쁘거나 잘못된 기본이라고 제안하는 것은 아닙니다. 병합이 기본값보다 선호되는 이유를 생각하는 데 어려움을 겪고 있습니다. 왜 선택되었는지에 대한 통찰력이 있습니까? 기본값으로 더 적합하게 만드는 이점이 있습니까?
이 질문의 주된 동기는 우리 회사가 개발자가 이전에 작업하지 않은 저장소에 더 쉽게 접근 할 수 있도록 저장소를 구성하고 관리하는 방법에 대한 몇 가지 기준 표준 (가이드 라인과 유사 함)을 설정하려고한다는 것입니다. 나는 우리가 보통 이런 유형의 상황에서 리베이스 해야하는 경우에 관심이 있습니다 (그리고 아마도 개발자가 기본적으로 글로벌 구성을 리베이스하도록 설정하도록 권장하기 위해 권장합니다). 너무 큰 경우 기본값. 그래서 내가 놓친 것이 있는지 궁금합니다.
이 질문은 왜 많은 웹 사이트가“git merge”보다“git rebase”를 선호 하는가? ; 그러나 그 질문은 이것 의 반대 입니다. 병합보다 rebase의 장점을 논의하는 반면,이 질문은 병합보다 rebase의 이점에 대해 묻습니다. 거기에 대한 답변은 병합 문제와 rebase의 이점에 중점을 둔 이것을 반영합니다.