programing

Git에서 마지막 커밋을 해제하는 방법

firstcheck 2023. 5. 13. 21:48
반응형

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\^

잘못된 분기에 커밋하는 경우

잘못된 분기에 있는 동안:

  1. git log -2커밋한 두 를 들어, 마막개 2커의제해공다니합를시지밋▁gives다제니▁you공합▁let.$prev그리고.$last
  2. git checkout $prev out commit (체크아웃 정확한 커밋)
  3. git checkout -b new-feature-branch 새 .
  4. git cherry-pick $last 사항이 를 적용합니다.

그런 다음 위에서 제안한 방법 중 하나를 수행하여 첫 번째 분기에서 커밋을 제거할 수 있습니다.

내용을 에는 변내푸않은경지우하시아직을 사용합니다.git reset --soft [Hash for one commit]특정 커밋으로 롤백합니다. --soft변경 내용을 롤백 상태로 유지하도록 git에 알립니다(즉, 파일을 수정된 것으로 표시). --hardGit에 롤백 중인 변경 내용을 삭제하도록 지시합니다.

그것 조심하세요.

그러나 rebase 명령을 사용할 수 있습니다.

git rebase -i HEAD~2

A vi열리면 커밋이 있는 줄을 삭제하기만 하면 됩니다.또한 적절한 버전으로 표시된 지침을 읽을 수 있습니다. @vi이 모드에서는 몇 가지 작업을 수행할 수 있습니다.

언급URL : https://stackoverflow.com/questions/2845731/how-to-uncommit-my-last-commit-in-git

반응형