커밋 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
출력이 비슷해 보일 것입니다. HEAD@{0}
에서 재설정을 볼 수 있습니다.
돌아가기 위해 아래와 같이 git reset
명령을 실행합니다.
$ git reset HEAD@{1}
이제 커밋 히스토리를 확인해보자.
$ git log --oneline
HEAD
가 Sixth Update
로 돌아왔습니다.
간단히 말해서 커밋 ID를 기반으로 Git 리포지토리를 되돌리는 것은 매우 쉽습니다. 일시적으로 커밋으로 전환하려면 git checkout
명령을 사용하세요.
특정 커밋으로 되돌리려면 git reset --hard
명령을 사용하고 커밋 해시를 표시합니다.
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn