Git에서 마지막 커밋을 해제하는 방법
마지막 약속을 취소하려면 어떻게 해야 합니까?
그런가요?
git reset --hard HEAD
또는
git reset --hard HEAD^
?
"커밋 해제"의 의미를 완전히 확신하지 못하고 사용할지 여부를 모르는 경우git reset
"이전 Git 커밋으로 되돌리기"를 참조하십시오.
당신이 이해하려고 한다면,git reset
더 나은, "git reset"이 일반 영어로 무엇을 하는지 설명할 수 있습니까?"를 참조하십시오.
사용하려는 경우git reset
여전히 "커밋 해제"가 무엇을 의미하는지에 따라 다릅니다.다른 모든 작업을 그대로 두고 커밋 작업을 취소하는 것만 원하는 경우 다음을 사용합니다.
git reset --soft HEAD^
커밋 작업과 준비한 모든 작업을 취소하고 작업 트리(파일)는 그대로 유지하려면 다음을 수행합니다.
git reset HEAD^
그리고 만약 당신이 실제로 그것을 완전히 취소하고, 커밋되지 않은 모든 변경사항을 버리고, 모든 것을 이전 커밋으로 재설정하고 싶다면 (원래 질문에서 질문한 대로):
git reset --hard HEAD^
원래의 질문은 또한 그것을 물었습니다.HEAD^
것은 아니다.HEAD
.HEAD
현재 커밋을 나타냅니다. 일반적으로 현재 체크아웃된 분기의 팁입니다.그^
는 임의의 커밋 지정자에 부착할 수 있는 표기법으로, "커밋 전"을 의미합니다.그렇게,HEAD^
현재 커밋 이전의 커밋입니다.master^
마스터 분기의 팁 앞에 있는 커밋입니다.
다음은 커밋을 지정하는 모든 방법을 설명하는 git-rev-parse 문서의 일부입니다.^
많은 것 중에서 기본적인 것일 뿐입니다).
git reset --soft HEAD^
수정된 변경 사항을 작업 트리에 유지합니다.
git reset --hard HEAD^
당신이 한 변화들을 버릴 것입니다!!!
실행 취소할 커밋의 변경 내용을 유지하려면 다음과 같이 하십시오.
git reset --soft HEAD^
실행 취소할 커밋의 변경 내용을 삭제하려면 다음과 같이 하십시오.
git reset --hard HEAD^
라고 말할 수도 있습니다.
git reset --soft HEAD~2
커밋을 두 번 되돌립니다.
편집: charsi가 언급했듯이, Windows에 있는 경우에는 HEAD를 넣거나 따옴표로 해시를 커밋해야 합니다.
git reset --soft "HEAD^"
git reset --soft "asdf"
조심해! reset --hard
로컬(커밋되지 않은) 수정도 제거됩니다.
git reset --hard HEAD^
참고: 창에 있는 경우 HEAD^를 인용해야 합니다.
git reset --hard "HEAD^"
작업을 포기하지 않고 커밋을 되돌리려면 --hard 대신 --soft 플래그를 사용합니다.
git reset --soft HEAD^
참고 사항 - ZSH를 사용하고 있으며 오류를 확인할 수 있습니다.
zsh: no matches found: HEAD^
당신은 탈출할 필요가 있습니다.^
git reset --soft HEAD\^
잘못된 분기에 커밋하는 경우
잘못된 분기에 있는 동안:
git log -2
커밋한 두 를 들어, 마막개 2커의제해공다니합를시지밋▁gives다제니▁you공합▁let.$prev
그리고.$last
git checkout $prev
out commit (체크아웃 정확한 커밋)git checkout -b new-feature-branch
새 .git cherry-pick $last
사항이 를 적용합니다.
그런 다음 위에서 제안한 방법 중 하나를 수행하여 첫 번째 분기에서 커밋을 제거할 수 있습니다.
내용을 에는 변내푸않은경지우하시아직을 사용합니다.git reset --soft [Hash for one commit]
특정 커밋으로 롤백합니다. --soft
변경 내용을 롤백 상태로 유지하도록 git에 알립니다(즉, 파일을 수정된 것으로 표시). --hard
Git에 롤백 중인 변경 내용을 삭제하도록 지시합니다.
그것 조심하세요.
그러나 rebase 명령을 사용할 수 있습니다.
git rebase -i HEAD~2
A vi
열리면 커밋이 있는 줄을 삭제하기만 하면 됩니다.또한 적절한 버전으로 표시된 지침을 읽을 수 있습니다. @vi
이 모드에서는 몇 가지 작업을 수행할 수 있습니다.
언급URL : https://stackoverflow.com/questions/2845731/how-to-uncommit-my-last-commit-in-git
'programing' 카테고리의 다른 글
대상 "ResolveWebJobFiles"가 Azure 웹 사이트의 프로젝트에 없습니다. (0) | 2023.06.02 |
---|---|
MacOS Catalina에서 Git가 작동하지 않음: "xcrun: 오류: 잘못된 활성 개발자 경로(/Library/Developer/CommandLineTools), 누락" (0) | 2023.05.13 |
서비스에서 사용할 네트워크 드라이브 매핑 (0) | 2023.05.13 |
다음 오류로 인해 CLSID가 {XXXX}인 구성 요소에 대한 COM 클래스 팩토리를 검색하지 못했습니다. 80040154 (0) | 2023.05.13 |
MongoDB 텍스트 검색 및 여러 검색어 (0) | 2023.05.13 |