programing tip

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

itbloger 2020. 9. 29. 07:24
반응형

Git에서 마지막 커밋을 해제하는 방법 [중복]


이 질문에 이미 답변이 있습니다.

git에서 마지막 커밋을 어떻게 해제 할 수 있습니까?

그것은

git reset --hard HEAD

또는

git reset --hard HEAD^

?


"uncommit"이 의미하는 바를 완전히 모르고을 사용하고 싶은지 모르겠다면 git reset" Revert to a previous Git commit " 참조하십시오 .

git reset더 잘 이해 하려면 " "git reset "이 평범한 영어로 무엇을하는지 설명 할 수 있습니까? "를 참조하십시오.


을 사용하려는 경우 git reset"uncommit"의 의미에 따라 달라집니다. 수행하려는 모든 작업을 실행 취소하고 나머지는 그대로두면 다음을 사용하십시오.

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~2

2 개의 커밋으로 되돌아갑니다.

편집 : charsi가 언급했듯이 Windows를 사용하는 경우 HEAD 또는 커밋 해시를 따옴표로 묶어야합니다.

git reset --soft "HEAD^"
git reset --soft "asdf"

git reset --soft HEAD^ 작업 트리에서 수정 된 변경 사항을 유지합니다.

git reset --hard HEAD^ 당신이 만든 변화를 버릴 것입니다!


주의 reset --hard하십시오. 로컬 (커밋되지 않은) 수정 사항도 제거됩니다.

git reset --hard HEAD^

참고 : Windows를 사용하는 경우 HEAD ^를 인용해야합니다.

git reset --hard "HEAD^"

참고 사항-ZSH를 사용 중이고 오류가 표시되는 경우

zsh: no matches found: HEAD^

당신은 탈출해야 ^

git reset --soft HEAD\^

If you haven't pushed your changes yet use git reset --soft [Hash for one commit] to rollback to a specific commit. --soft tells git to keep the changes being rolled back (i.e., mark the files as modified). --hard tells git to delete the changes being rolled back.


If you commit to the wrong branch

While on the wrong branch:

  1. git log -2 gives you hashes of 2 last commits, lets say $prev and $last
  2. git checkout $prev checkout correct commit
  3. git checkout -b new-feature-branch creates a new branch for feature
  4. git cherry-pick $last patches a branch with your changes

Then you can follow one the methods suggested above to remove your commit from the first branch.


Be careful with that.

But you can use the rebase command

git rebase -i HEAD~2

A vi will open and all you have to do is delete the line with the commit. Also can read instructions that was shown in proper edition @ vi, a couple of things can be performed on this mode

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

반응형