이 답변은 나의 이해, 다이어그램 및 결론이 잘못되어 수정되었습니다.
git pull
git이 병합되기 때문에 병합 커밋이 발생합니다. 병합 대신 리베이스를 사용하도록 분기를 설정하여 변경할 수 있습니다. 풀에서 병합하는 대신 rebase를 사용하면 공유 저장소에 더 선형적인 기록이 제공됩니다. 반면에 병합 커밋은 브랜치에서의 병렬 개발 노력을 보여줍니다.
예를 들어 두 사람이 같은 지점에서 일하고 있습니다. 분기는 다음과 같이 시작합니다.
...->C1
첫 번째 사람이 작업을 마치고 지점으로 이동합니다.
...->C1->C2
두 번째 사람이 작업을 마치고 푸시를 원하지만 업데이트가 필요하기 때문에 할 수 없습니다. 두 번째 사람의 로컬 저장소는 다음과 같습니다.
...->C1->C3
풀이 병합으로 설정되면 두 번째 사람 저장소는 다음과 같습니다.
...->C1->C3->M1
\ /
->C2->
M1은 병합 커밋입니다. 이 새로운 브랜치 기록은 리포지토리로 푸시됩니다. 대신 풀이 로컬 리포지토리를 리베이스하도록 설정되면 다음과 같습니다.
...->C1->C2->C3
병합 커밋이 없습니다. 역사는 더 선형 적으로 만들어졌습니다.
두 가지 선택 모두 지점의 역사를 반영합니다. git을 사용하면 선호하는 히스토리를 선택할 수 있습니다.
실제로 rebase가 원격 브랜치에 문제를 일으킬 수있는 곳이 있습니다. 이것은 그러한 경우 중 하나가 아닙니다. 우리는 이미 복잡한 브랜치 히스토리를 단순화하고 공유 저장소와 관련된 히스토리 버전을 보여주기 때문에 리베이스를 사용하는 것을 선호합니다.
branch.autosetuprebase = always를 설정하여 git이 자동으로 원격 분기를 master 대신 rebase로 설정하도록 할 수 있습니다.
git config --global branch.autosetuprebase always
이 설정은 git이 각 원격 분기에 대한 구성 설정을 자동으로 생성하도록합니다.
branch.<branchname>.rebase=true
이미 설정된 원격 브랜치에 대해 직접 설정할 수 있습니다.
git config branch.<branchname>.rebase true
이전 진술에 대해 질문하고 추구해 주신 @LaurensHolst에게 감사드립니다. 나는 확실히 git이 pull and merge 커밋과 함께 작동하는 방법에 대해 더 많이 배웠다.
병합 커밋에 대한 자세한 내용은 ProGit-Book 의 프로젝트 에 기여를 참조하세요 . 개인 작은 팀 섹션 쇼 커밋을 병합합니다.
git log --no-merges