Git 리포지토리를 이전 커밋으로 되돌리기
이 문서에서는 Git 리포지토리를 이전 커밋으로 되돌리는 방법에 대해 설명합니다. 다음은 우리가 다룰 세 가지 방법입니다.
- 일시적으로 이전 커밋으로 롤백
- 게시되지 않은 커밋 삭제
- 게시된 커밋 실행 취소
일시적으로 이전 커밋으로 롤백
첫 번째 방법은 git checkout
명령을 사용하는 것입니다.
이렇게 하면 브랜치에서 커밋 기록을 다시 작성하지 않고도 이전 Git 커밋으로 돌아갈 수 있습니다. 다음은 예입니다.
이것이 우리의 커밋 히스토리라고 가정할 때, 우리는 어떻게 3개의 커밋으로 되돌아가나요? (예: HEAD~3
)
아래 그림과 같이 git checkout
명령을 실행할 수 있습니다.
$ git checkout HEAD~3
위에서 본 것처럼 현재 분리 모드입니다. 브랜치에 영향을 주지 않고 변경, 실험 및 커밋할 수 있습니다.
detached HEAD
모드에서는 변경 사항이 손실될 수 있으므로 주의하십시오. 이러한 변경 사항을 유지하려면 아래와 같이 새 분기를 만듭니다.
$ git checkout -b Detached
지점 이름은 원하는 대로 지정할 수 있습니다.
게시되지 않은 커밋 삭제
게시되지 않은 변경 사항은 아직 원격 저장소에 푸시하지 않은 커밋입니다.
커밋을 삭제하여 git reset
명령을 사용하여 로컬 리포지토리를 이전 상태로 롤백할 수 있습니다. 다음은 예입니다.
일시적으로 전환하는 대신 위 섹션에서 논의한 세 가지 커밋을 영구 삭제하려면 어떻게 해야 할까요? 어떻게 할까요?
아래 그림과 같이 git reset
명령을 실행하여 세 커밋을 하드 삭제합니다.
$ git reset --hard HEAD~3
위의 명령은 세 개의 커밋과 커밋되지 않은 변경 사항을 제거합니다. 커밋되지 않은 변경 사항을 유지하려면 git stash
명령을 실행해야 합니다.
이 방법은 특히 공유 저장소인 경우 원격 저장소에 변경 사항을 푸시하지 않은 경우에만 사용해야 합니다.
게시된 커밋 취소
위 섹션에서 게시되지 않은 커밋을 삭제하는 방법을 살펴보았습니다. 커밋을 원격 저장소에 이미 푸시했다면 어떻게 될까요?
git reset --hard
명령은 파괴적이며 여러 개발자가 동일한 프로젝트에서 작업하는 프로젝트의 타임라인을 망칠 수 있습니다.
게시된 커밋을 취소하는 가장 안전한 방법은 git revert
명령을 사용하는 것입니다. 이것은 커밋 기록을 다시 쓰지 않고 되돌리고 새 커밋을 만듭니다.
다른 개발자가 무슨 일이 일어나고 있는지 더 쉽게 이해할 수 있습니다.
세 커밋을 되돌리기 위해 다음을 실행합니다.
$ git revert --no-commit HEAD~3..HEAD
--no-commit
플래그를 사용하면 되돌린 세 커밋 모두에 대해 하나의 커밋 메시지를 만들 수 있습니다. 플래그를 포함하지 않으면 지저분해 보이고 저장소를 어지럽히는 각 커밋에 대한 커밋 메시지를 생성해야 합니다.
간단히 말해서 Git에서 이전 커밋으로 되돌리는 세 가지 방법이 있습니다. 그것은 모두 귀하의 상황에서 되돌리기의 정의에 달려 있습니다.
일시적으로 이전 커밋으로 전환하려면 git checkout
명령을 사용하세요. git reset --hard
는 게시되지 않은 변경 사항에 대해 예약되어야 하며 git revert
명령은 게시된 커밋에 가장 적합합니다.
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