2017-05-18 13 views
0

내 질문은 간단합니다. git pull은 원본 저장소에서 새 변경 내용을 가져올 때 빨리 감기 병합을 수행합니까? 나는 기본적으로 문서를 읽지 않는다. 그러나 당길 때 병합 커밋이 없다. 원점 다음과 같은 역사를 가진 저장소 고려 예를 들어 git pull and fast forward merging

:

A -> B -> C -> D 

그리고 내 작업 저장소와 같은 것입니다 : 내가 원격에서 끌어 만약 내가 얻을

A -> B -> C -> W -> X 

다음 :

A -> B -> C -> W -> X -> D 

X과사이의 병합 커밋없이. 새로운 변경 사항을 가져올 때 병합 충돌이 없습니다. 이것은 자식 가이드에서 이해 한 것과 일치하지 않습니다.

+0

예제에서 D 커밋과 동일한 파일을 변경하지 않은 경우 충돌이 없으므로 변경 내용을 원격 분기의 내용과 병합합니다. –

+0

'true merge'및 'fast-forward merge '. https://www.git-scm.com/docs/git-merge – ElpieKay

답변

0

동작이 비슷하면 git pull --rebase을 호출했거나 pull이 기본적으로 리베이스를 수행하도록 로컬 리포지토리의 구성을 변경했습니다.

pull 통합되는 첫 분기에 대한 fetch 일을 조합 한 후 기본적으로 merge 또는 설정 또는 매개 변수를 달리 rebase을 말한다면.

merge 로컬 브랜치에만있는 커밋이없는 경우 기본적으로 빨리 감기 병합이 수행됩니다. 구성 또는 매개 변수 --no-ff을 통해이를 방지하거나 구성 또는 매개 변수 --ff-only을 통해 빨리 감기 병합 만 수행하도록 할 수 있습니다. 빨리 감기 병합이 불가능할 경우 병합에 실패합니다 (즉, 로컬 커밋을 수행 한 경우).).

merge으로 설명하는 동작은 D의 이력 및 SHA 값을 변경하는 rebase이므로 수행 할 수 없습니다. 위임자 이름으로 당신과 완전히 새로운 커밋이며 이제는 커밋 날짜와 마찬가지로 D과 동일한 변경 사항을 도입하고 동일한 작성자 이름과 작성자 날짜를가집니다. 재 작성된 커밋은 일반적으로 D'이라고합니다.

+0

하지만 풀 구성에서 rebase조차되지 않습니다. git pull 이후에 b/c는 A -> B -> C -> D -> W가 될 것입니다. W와 X가 로컬 일 때 X>를 나타냅니다. 아마도 질문을 쓰는 데 혼란이있을 수 있습니다. 단서가 없습니다. – hakre

+0

아, 맞아요, 당신 말이 맞아요, rebase는 커밋을 맨 위에 놓을 것입니다. 그래서 당신이했던 정확한 명령과'git config -l'의 결과를 보지 않고서 어떻게 결과에 도달했는지 말할 수 있습니다. 그러나 여전히 병합은 둘 다 개별 커밋을 가진 두 가지 지점에서 선형 역사를 생성 할 수 없어야합니다. – Vampire

+0

내 결과가 아니라, 질문에서 OP의 결과에 대해 생각하는 대답에 대해 의견을 말하기 만했습니다. :) – hakre