원격 원점에서 원치 않는 커밋으로 인해 git pull을 취소하고 싶지만 재설정 해야하는 개정판을 모르겠습니다.
git이 원격 원점을 당기기 전에 어떻게 상태로 돌아갈 수 있습니까?
답변
또는 다른 답변보다 더 명시 적으로 만들려면 :
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의 마지막 값입니다)
답변
git reflog show
HEAD의 역사를 보여 주어야합니다. 이를 사용하여 이전의 위치를 파악할 수 있습니다 pull
. 그럼 당신은 그 커밋을 할 수 reset
있습니다 HEAD
.
답변
이것은 나를 위해 일했습니다.
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을 힘내에 이상.
답변
<SHA#>
당신이 가고 싶은 커밋을 찾으십시오 . github에서 또는 명령 줄
git log
이나 입력하여 찾을 수 있습니다.git reflog show
git reset --hard <SHA#>
답변
병합 작업을 취소하거나 더러운 작업 트리 내부로 가져 오기
$ 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
로컬 변경 사항을 유지합니다.