HOWTO · Git

Git 리포지토리를 이전 커밋으로 되돌리기

Git 리포지토리의 이전 커밋으로 롤백할 수 있습니다.

이 문서에서는 Git 리포지토리를 이전 커밋으로 되돌리는 방법에 대해 설명합니다. 다음은 우리가 다룰 세 가지 방법입니다.

  1. 일시적으로 이전 커밋으로 롤백
  2. 게시되지 않은 커밋 삭제
  3. 게시된 커밋 실행 취소

일시적으로 이전 커밋으로 롤백

첫 번째 방법은 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 명령은 게시된 커밋에 가장 적합합니다.