후레임의 프로그래밍
Git 저장소를 이전 커밋으로 되돌리려면 어떻게해야합니까? 본문
질문
현재 상태에서 특정 커밋에서 만든 스냅 샷으로 되돌리려면 어떻게해야합니까?
git log
를 수행하면 다음 출력이 표시됩니다.
$ git log
commit a867b4af366350be2e7c21b8de9cc6504678a61b`
Author: Me <me@me.com>
Date: Thu Nov 4 18:59:41 2010 -0400
blah blah blah...
commit 25eee4caef46ae64aa08e8ab3f988bc917ee1ce4
Author: Me <me@me.com>
Date: Thu Nov 4 05:13:39 2010 -0400
more blah blah blah...
commit 0766c053c0ea2035e90f504928f8df3c9363b8bd
Author: Me <me@me.com>
Date: Thu Nov 4 00:55:06 2010 -0400
And yet more blah blah...
commit 0d1d7fc32e5a947fbd92ee598033d85bfc445a50
Author: Me <me@me.com>
Date: Wed Nov 3 23:56:08 2010 -0400
Yep, more blah blah.
11 월 3 일 커밋으로 되돌리려면 어떻게해야하나요 (예 : 커밋 0d1d7fc
)?
답변
이것은 "되돌리기"의 의미에 따라 크게 달라집니다.
일시적으로 다른 커밋으로 전환
일시적으로 돌아가고 싶을 때, 바보짓을 한 다음 현재 위치로 돌아 오면 원하는 커밋을 확인하기 만하면됩니다.
# This will detach your HEAD, that is, leave you with no branch checked out:
git checkout 0d1d7fc32
또는 그곳에있는 동안 커밋을 하고 싶다면 그곳에있는 동안 새로운 브랜치를 만드세요 :
git checkout -b old-state 0d1d7fc32
현재 위치로 돌아가려면 다시 방문했던 지점을 확인하세요. (지점을 변경할 때 항상 그렇듯이 변경 한 경우 적절하게 처리해야합니다. 재설정하여 버리고, 보관하고, 결제하고, 보관하여 가져갈 수 있습니다. 거기에 지점을 원하면 거기에 지점에.)
게시되지 않은 커밋 하드 삭제
반면에 그 이후로 수행 한 모든 작업을 정말로 없애고 싶다면 두 가지 가능성이 있습니다. 하나, 이러한 커밋을 게시하지 않은 경우 간단히 재설정하십시오.
# This will destroy any local modifications.
# Don't do it if you have uncommitted work you want to keep.
git reset --hard 0d1d7fc32
# Alternatively, if there's work to keep:
git stash
git reset --hard 0d1d7fc32
git stash pop
# This saves the modifications, then reapplies that patch after resetting.
# You could get merge conflicts, if you've modified things which were
# changed since the commit you reset to.
오류가 발생하면 이미 로컬 변경 사항을 버린 것입니다.하지만 적어도 다시 재설정하면 이전 위치로 돌아갈 수 있습니다.
새 커밋으로 게시 된 커밋 실행 취소
반면에 작품을 게시 한 경우에는 분기를 재설정하고 싶지 않을 것입니다. 이는 효과적으로 기록을 다시 작성하기 때문입니다. 이 경우 실제로 커밋을 되돌릴 수 있습니다. 힘내에서 되돌리기는 매우 특정한 의미를 지닙니다. 취소하기 위해 리버스 패치로 커밋을 만듭니다. 이렇게하면 기록을 다시 쓰지 않습니다.
# This will create three separate revert commits:
git revert a867b4af 25eee4ca 0766c053
# It also takes ranges. This will revert the last two commits:
git revert HEAD~2..HEAD
#Similarly, you can revert a range of commits using commit hashes (non inclusive of first hash):
git revert 0d1d7fc..a867b4a
# Reverting a merge commit
git revert -m 1 <merge_commit_sha>
# To get just one, you could use `rebase -i` to squash them afterwards
# Or, you could do it manually (be sure to do this at top level of the repo)
# get your index and work tree into the desired state, without changing HEAD:
git checkout 0d1d7fc32 .
# Then commit. Be sure and write a good message describing what you just did
git commit
git-revert
맨 페이지 는 실제로 설명에이 내용이 많이 있습니다. 또 다른 유용한 링크는 git에 대해 설명하는이 git-scm.com 섹션입니다. -되돌리기 .
결국 되 돌리지 않기로 결정한 경우 되돌리기 (여기에 설명 된대로)를 되돌 리거나 되돌리기 이전으로 다시 재설정 할 수 있습니다 (이전 섹션 참조).
You may also find this answer helpful in this case:
How can I move HEAD back to a previous location? (Detached head) & Undo commits
'스택오버플로우(Stack Overflow)' 카테고리의 다른 글
JavaScript에서 문자열에 하위 문자열이 포함되어 있는지 확인하는 방법은 무엇입니까? (0) | 2020.10.26 |
---|---|
"git pull"이 로컬 파일을 덮어 쓰도록하려면 어떻게해야합니까? (0) | 2020.10.26 |
JavaScript closures는 어떻게 작동합니까? (0) | 2020.10.26 |
푸시되지 않은 기존 커밋 메시지를 수정하는 방법은 무엇입니까? (0) | 2020.10.26 |
JavaScript에서 "use strict"은 무엇을 하며 그 이유는 무엇입니까? (0) | 2020.10.26 |