실행 취소하는 가장 간단한 방법은 무엇입니까?
git reset HEAD~
현재 내가 생각할 수 있는 유일한 방법은 원격 저장소에서 git clone http://...
질문자 :Andriy Drozdyuk
실행 취소하는 가장 간단한 방법은 무엇입니까?
git reset HEAD~
현재 내가 생각할 수 있는 유일한 방법은 원격 저장소에서 git clone http://...
git reset 'HEAD@{1}'
Git은 모든 참조 업데이트(예: 체크아웃, 재설정, 커밋, 병합)의 로그를 유지합니다. 다음을 입력하여 볼 수 있습니다.
git reflog
이 목록의 어딘가에 잃어버린 커밋이 있습니다. git reset HEAD~
입력하고 실행 취소하려고 한다고 가정해 보겠습니다. 내 reflog는 다음과 같습니다.
$ git reflog 3f6db14 HEAD@{0}: HEAD~: updating HEAD d27924e HEAD@{1}: checkout: moving from d27924e0fe16776f0d0f1ee2933a0334a4787b4c [...]
첫 번째 줄은 HEAD
0 이전 위치(즉, 현재 위치)가 3f6db14임을 나타냅니다. HEAD~
로 재설정하여 얻었습니다. 두 번째 줄은 HEAD
1 이전 위치(즉, 재설정 전 상태)가 d27924e임을 나타냅니다. 특정 커밋을 확인하여 얻었습니다(지금은 중요하지 않지만). 따라서 재설정을 취소하려면 git reset HEAD@{1}
(또는 git reset d27924e
)를 실행합니다.
반면에 HEAD를 업데이트한 이후로 다른 명령을 실행했다면 원하는 커밋이 목록의 맨 위에 있지 않고 reflog
통해 검색해야 합니다.
HEAD
보다 재설정하려는 특정 분기(예: master) reflog
를 보는 것이 더 쉬울 수 있습니다.
$ git reflog show master c24138b master@{0}: merge origin/master: Fast-forward 90a2bf9 master@{1}: merge origin/master: Fast-forward [...]
HEAD reflog
보다 노이즈가 적어야 합니다.
오래된 질문과 게시 된 답변이 훌륭하게 작동합니다. 그래도 다른 옵션을 선택하겠습니다.
git reset ORIG_HEAD
ORIG_HEAD
HEAD
이전에 참조한 커밋을 참조합니다.
내 상황은 약간 달랐습니다. 나는 git reset HEAD~
세 번 했습니다.
그것을 취소하기 위해 나는해야했다
git reset HEAD@{3}
그래서 당신은 할 수 있어야합니다
git reset HEAD@{N}
그러나 다음을 사용하여 git reset을 수행한 경우
git reset HEAD~3
당신은 할 필요가있을 것입니다
git reset HEAD@{1}
{N} 은 Mark가 주석에서 지적한 대로 reflog의 작업 수를 나타냅니다.
1. git reflog
를 사용하여 모든 참조 업데이트를 가져옵니다.
2. git reset <id_of_commit_to_which_you_want_restore>
출처 : http:www.stackoverflow.com/questions/2510276/how-to-undo-git-reset
1...N을 포함하는 배열을 만드는 방법 (0) | 2022.02.15 |
---|---|
JavaScript는 참조에 의한 전달 또는 값에 의한 전달 언어입니까? (0) | 2022.02.15 |
Bash 셸 스크립트에서 입력 인수의 존재 확인 (0) | 2022.02.15 |
Java에 임시 필드가 있는 이유는 무엇입니까? (0) | 2022.02.15 |
"git commit" 대신 수행된 "git commit --amend"를 실행 취소하는 방법 (0) | 2022.02.15 |