첫 번째 명령 집합에서 rebase
은 의도 한 것과 다를 수 있습니다. rebase
은 리모컨을 인수로 사용하지 않습니다.
(UPDATE : 어떤 상황에서 말했다 git
의 Ref 같은 원격 이름을 해석하는 것이며, 그것은 심지어 당신은 내가 나 자신에 의존하지 않을의 의미를 나타냅니다 가능하지만, :.이 경우 상징적 인 참조 refs/remotes/origin/HEAD
- origin
의 "기본 지점"으로 해석 할 수 있으며 유효한 HEAD
참조가있는 시간에 원점을 복제하여 로컬을 생성 한 경우 일반적으로 존재합니다. origin
은 refs/remotes/origin/HEAD
이 가리키는 범위로 확장됩니다 .)
나는 너를 의미한다고 생각한다.
git rebase origin/master master
업스트림 구성을 기반으로 작성했으며 이미 master
을 체크 아웃 한 간단한 방법이 있습니다. 나는 이것이 당신이하고자하는 일이라고 가정 할 때 계속하겠습니다.
두 번째 명령은 첫 번째 명령 집합의 약식입니다.
그러나 세 번째 명령은 동일하지 않습니다. rebase
은 새로운 커밋을 만들고 refs를 이동하지만 (기존 커밋 세트를 "이동"하는 것으로 나타남), checkout
은 그 중 어떤 것도 수행하지 않습니다. checkout
은 현재 HEAD
만 이동합니다.설명하기
,의 당신이
A -- B <--(master)
^HEAD
있다고 가정하자 기원은 당신이 rebase
로 할 경우 지금
A -- B <--(master)
\ ^(HEAD)
C <--(origin/master)
를 얻을 수 있습니다 fetch
경우에 따라서
A -- C <--(master)
있다
git rebase origin/master master
(또는 일반적인 configuraiton 단지
git rebase
)는
B
/
A -- C <--(origin/master)
\
B' <--(master)
^HEAD
하게 될 겁니다 본인은이 B'
표시되어 master
에 커밋 이유를 설명하기 위해 그림에 B
을 유지했다. 원래 B
커밋은 여전히 존재하지만 (현재는) B'
은 rebase
에 생성 된 새로운 커밋입니다. B
이 "dangling"이기 때문에 결국 가비지 수집 될 수 있습니다. 당신이 말을하는 fetch
후 대신 fetch
의 경우 대신 rebase
등을하지 않으면, 당신은, 다른 한편으로
git pull --rebase origin master
시작했다 기대할 수있는 것을이기도
git checkout FETCH_HEAD
당신은 얻을 것
A -- B <--(master)
\
C <--(origin/master)
^(HEAD)
새 커밋 없음, 이동 참조 없음; 그냥 HEAD
변경 (그리고 당신은 분리 된 HEAD
상태입니다).
'git checkout FETCH_HEAD'는 분리 된 헤드로서'FETCH_HEAD'를 체크 아웃합니다. 새로운 커밋은 그 위에 놓이지 않습니다. – PetSerAl
"git checkout FETCH_HEAD"가 무엇을하는지 이해하지 못하는 이유는 "FETCH_HEAD를 체크 아웃하는 것"이 무엇을 의미하는지 이해할 수 없다는 것입니다. – Roman