원격 원점에서 원치 않는 커밋으로 인해 git pull을 취소하고 싶지만 재설정 해야하는 개정판을 모르겠습니다.
git이 원격 원점을 당기기 전에 어떻게 상태로 돌아갈 수 있습니까?
undo
쉽고 명확하게 무대 unstage 파일을 커밋하고 확인란을. GUI도 사람들입니다!
원격 원점에서 원치 않는 커밋으로 인해 git pull을 취소하고 싶지만 재설정 해야하는 개정판을 모르겠습니다.
git이 원격 원점을 당기기 전에 어떻게 상태로 돌아갈 수 있습니까?
undo
쉽고 명확하게 무대 unstage 파일을 커밋하고 확인란을. GUI도 사람들입니다!
답변:
또는 다른 답변보다 더 명시 적으로 만들려면 :
git pull
으악?
git reset --keep HEAD@{1}
1.7.1 이전의 git 버전에는 없습니다 --keep
. 그러한 버전을 사용하면 사용할 수 --hard
있지만 로컬 변경 사항이 손실되므로 위험한 작업입니다.
ORIG_HEAD는 위험한 행동이있는 명령으로 쉽게 되돌릴 수 있도록 이전 HEAD 상태입니다. Git에 리플 로그가 있으므로 이제는 유용하지 않습니다 : HEAD @ {1}은 ORIG_HEAD와 거의 같습니다 (HEAD @ {1}은 항상 HEAD의 마지막 값이고 ORIG_HEAD는 위험한 작동 전 HEAD의 마지막 값입니다)
man git-rev-parse
이것을 설명합니다. HEAD@{1}
심볼의 이전 값 HEAD
있는 reflog
반면는 HEAD^
제 (제)는 상위 버전 전류 HEAD
. 이 둘은 동일 할 필요가 없습니다 (예 : 리베이스, 하드 리셋, 분기 스위치 등). reflog에 대한 링크 된 기사를 읽으십시오. 건배
git reset HEAD@`{1`}
HEAD@`{1`}
. 또는 그 문제에 대해서도 POSIX 쉘에서 작동하는 것을한다.'HEAD@{1}'
git reflog show
HEAD의 역사를 보여 주어야합니다. 이를 사용하여 이전의 위치를 파악할 수 있습니다 pull
. 그럼 당신은 그 커밋을 할 수 reset
있습니다 HEAD
.
pull
첫 번째 조치는 무엇입니까? 경우 pull
에있다 HEAD@{1}
, 그리고 다른 그 전에 아무것도, 당신은 어떻게 그 전에 상태로 복귀하지 않습니다?
이것은 나를 위해 일했습니다.
git reset --hard ORIG_HEAD
병합을 취소하거나 가져 오십시오.
$ git pull (1)
Auto-merging nitfol
CONFLICT (content): Merge conflict in nitfol
Automatic merge failed; fix conflicts and then commit the result.
$ git reset --hard (2)
$ git pull . topic/branch (3)
Updating from 41223... to 13134...
Fast-forward
$ git reset --hard ORIG_HEAD (4)
이 체크 아웃 : HEAD와 ORIG_HEAD을 힘내에 이상.
병합 작업을 취소하거나 더러운 작업 트리 내부로 가져 오기
$ git pull (1) Auto-merging nitfol Merge made by recursive. nitfol | 20 +++++---- ... $ git reset --merge ORIG_HEAD (2)
작업 트리에서 로컬로 수정 한 경우에도 안전하게 말할 수 있습니다.
git pull
다른 분기의 변경 사항이 해당 변경 사항과 겹치지 않는다는 것을 알면 있습니다.병합 결과를 검사 한 후 다른 지점의 변경 사항이 만족스럽지 않을 수 있습니다. 실행
git reset --hard ORIG_HEAD
하면 원래 위치로 돌아갈 수 있지만 원하지 않는 로컬 변경 사항은 삭제됩니다.git reset --merge
로컬 변경 사항을 유지합니다.
git fetch upstream
먼저 유용한 정보를 찾은 다음git diff upstream/branch
병합 할 대상을 간단히 살펴보십시오 . 모든 것이 잘된다면git merge upstream/branch