HOWTO · Git

커밋 ID로 Git 리포지토리 되돌리기

커밋 ID를 기반으로 Git 리포지토리를 되돌릴 수 있습니다.

이 페이지의 내용

이 기사에서는 커밋 ID를 기반으로 Git 리포지토리를 되돌리는 방법에 대해 설명합니다. 상태를 검사하거나 이후 커밋을 삭제하기 위해 이전 커밋으로 돌아가야 할 수도 있습니다.

두 시나리오에 대해 논의해 보겠습니다.

일시적으로 Git 커밋으로 전환

커밋 ID를 언급하면서 git checkout 명령을 사용하여 일시적으로 이전 커밋으로 전환합니다.

$ git checkout <Commit ID>

이 명령은 저장소의 HEAD를 분리합니다(우리는 분기에서 체크아웃되지 않음). 이 상태에서는 커밋할 수 없습니다.

아래와 같이 커밋을 기반으로 새 브랜치를 생성해야 합니다.

$ git switch -c <new-branch-name>

위의 명령을 결합하여 아래와 같은 작업을 수행할 수 있습니다.

$ git checkout -b <new-branch-name> <Commit ID>

커밋 ID로 Git 리포지토리 되돌리기

롤백하려는 커밋 ID를 전달하는 동안 --hard 플래그와 함께 git reset 명령을 사용합니다. 아래 명령어를 실행하세요.

$ git reset --hard <Commit ID>

이 명령을 실행하면 언급된 커밋까지의 모든 최근 커밋이 삭제됩니다. 이 명령은 인덱스에서 커밋되지 않은 변경 사항도 삭제합니다.

변경 사항을 유지하려면 다음을 수행하십시오.

$ git stash
$ git reset --hard <Commit ID>
$ git stash pop

원격 저장소를 업데이트하려면 아래 git push 명령을 사용하세요.

$ git push -f

이 명령은 로컬 저장소를 기반으로 원격 저장소를 재정의하므로 주의하십시오. 예를 들어 보겠습니다.

아래 예에서는 커밋 ID를 기반으로 git repo Delftscopetech를 되돌리려고 시도합니다. git log 명령을 실행하여 저장소의 모든 커밋을 나열해 보겠습니다.

$ git log --oneline

레포 히스토리

Fourth Update로 돌아가려면 어떻게 해야 합니까?

아래 컨텍스트에서 git reset 명령을 실행합니다.

$ git reset --hard df90895
HEAD is now at df90895 Fourth Update

출력은 HEAD가 현재 Fourth Update에 있음을 보여줍니다. git push 명령을 실행하여 변경 사항을 원격 저장소로 푸시할 수 있습니다.

재설정을 취소하려면 다음을 따르십시오.

먼저 git reflog 명령을 실행하여 저장소의 모든 참조 업데이트를 확인합니다.

$ git reflog

Git reflog

출력이 비슷해 보일 것입니다. HEAD@{0}에서 재설정을 볼 수 있습니다.

돌아가기 위해 아래와 같이 git reset 명령을 실행합니다.

$ git reset HEAD@{1}

이제 커밋 히스토리를 확인해보자.

$ git log --oneline

레포 히스토리 2

HEAD가 Sixth Update로 돌아왔습니다.

간단히 말해서 커밋 ID를 기반으로 Git 리포지토리를 되돌리는 것은 매우 쉽습니다. 일시적으로 커밋으로 전환하려면 git checkout 명령을 사용하세요.

특정 커밋으로 되돌리려면 git reset --hard 명령을 사용하고 커밋 해시를 표시합니다.