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

John Wachira 2024년2월15일
  1. 일시적으로 Git 커밋으로 전환
  2. 커밋 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

HEADSixth Update로 돌아왔습니다.

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

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

작가: John Wachira
John Wachira avatar John Wachira avatar

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

관련 문장 - Git Reset