또 다른 질문 은 말했다git pull
git fetch
+ 와 같습니다 git merge
.
그러나 git pull
VS git fetch
+ 의 차이점은 무엇 git rebase
입니까?
또 다른 질문 은 말했다git pull
git fetch
+ 와 같습니다 git merge
.
그러나 git pull
VS git fetch
+ 의 차이점은 무엇 git rebase
입니까?
답변:
귀하의 질문에서 실제로 git merge
와 의 차이점에 대해 묻는다는 것이 분명합니다 git rebase
.
당신이 일반적인 경우에 있다고 가정합시다-당신은 당신의 마스터 브랜치에서 약간의 작업을 수행했고, 당신은 또한 약간의 작업을 수행 한 원점에서 가져옵니다. 가져온 후에는 다음과 같습니다.
- o - o - o - H - A - B - C (master)
\
P - Q - R (origin/master)
충돌이 없다고 가정하면이 시점 (git pull의 기본 동작)을 병합하면 다음과 같이 끝납니다.
- o - o - o - H - A - B - C - X (master)
\ /
P - Q - R --- (origin/master)
다른 한편으로 당신은 적절한 rebase를했다면, 당신은 이것으로 끝날 것입니다 :
- o - o - o - H - P - Q - R - A' - B' - C' (master)
|
(origin/master)
작업 트리의 내용은 두 경우 모두 동일해야합니다. 방금 다른 역사를 만들었습니다 . rebase는 히스토리를 다시 작성하여 R
원래 커밋 된 위치 ( ) 대신 원래의 새 마스터 브랜치 ( )를 커밋 한 것처럼 보입니다 H
. 다른 누군가가 이미 마스터 브랜치에서 가져온 경우 리베이스 접근 방식을 사용해서는 안됩니다.
마지막으로 git pull
config 매개 변수 branch.<name>.rebase
를 true 로 설정하여 병합 대신 rebase를 사용하도록 지정된 분기에 대해 실제로 설정할 수 있습니다 . 를 사용하여 단일 풀에 대해서도이 작업을 수행 할 수 있습니다 git pull --rebase
.
git pull
실행처럼 git fetch
다음 git merge
git pull --rebase
과 같다 git fetch
다음git rebase
git pull
git fetch
+ 와 같습니다 git merge
.
"기본 모드에서 git pull은 줄임말
git fetch
로git merge
FETCH_HEAD입니다."git pull
실행git fetch
지정된 파라미터 다음 호출git merge
"현재 지점으로 검색된 지점의 머리를 병합
(참고 : https://git-scm.com/docs/git-pull )
'그러나 git pull
VS git fetch
+ 의 차이점은 무엇입니까?git rebase
'
다시 같은 출처에서 :
git pull --rebase
"--rebase를 사용하면 git merge 대신 git rebase를 실행합니다."
'사이의 차이 merge
와 rebase
'
즉, 너무 여기에 대한 답변 :
https://git-scm.com/book/en/v2/Git-Branching-Rebasing
(방법의 버전 기록을 변경의 차이가 기록)
git fetch + git rebase
지금부터 명령이 작동 하는 방식을 이해합니다 . 지금부터 우리 자식 트리에 충돌이 거의 없습니다 :)