HOWTO · Git

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

이 기사에서는 Git 리포지토리를 이전 커밋으로 되돌리는 다양한 방법에 대해 설명합니다.

이 기사에서는 git 저장소를 이전 커밋으로 롤백할 수 있는 다양한 방법에 대해 설명합니다. Git으로 거의 모든 것을 취소할 수 있습니다.

로컬 및 원격 리포지토리와 게시되지 않은 커밋 및 게시된 커밋을 실행 취소하는 방법을 살펴보겠습니다.

게시되지 않은 커밋을 제거하여 Git 리포지토리를 이전 커밋으로 되돌리기

게시되지 않은 커밋은 아직 원격 저장소로 푸시되지 않은 로컬 저장소의 커밋입니다. 이 개념을 설명하기 위해 예를 사용하겠습니다.

예 1:

아래는 로컬 저장소의 커밋 기록입니다. 각 커밋 메시지에 주어진 조합에 유의하십시오.

커밋 내역

어떤 이유로 가장 최근 커밋에 오류가 있는 경우 커밋을 삭제하고 리포지토리를 이전 상태로 되돌릴 수 있습니다.

이 경우 잘못된 커밋은 ba4c699(업데이트 이름)여야 합니다. git rest --hard <sha1-commit-hash> 명령을 실행하여 이 커밋을 삭제합니다.

git reset --hard 00e1a53

출력:

HEAD is now at 00e1a53 Merge branch 'main' of https://github.com/Wachira11ke/Delftscopetech

위의 명령은 리포지토리를 지정된 커밋으로 되돌리고 그 이후의 커밋을 삭제합니다. 이 명령은 또한 저장소에서 커밋되지 않은 모든 변경 사항을 삭제합니다.

유지하고 삭제 후 적용하려면 아래 명령을 실행하십시오.

git stash
git reset --hard 00e1a53
git stash pop

이 조합은 커밋되지 않은 변경 사항을 저장하고 새 작업 공간에 적용합니다. 파일을 수정한 경우 병합 오류가 발생할 수 있습니다.

게시된 커밋을 제거하여 Git 리포지토리를 이전 커밋으로 되돌리기

게시된 커밋은 원격 저장소에 적용된 변경 사항입니다. 로컬 저장소에서 원격 저장소로 잘못된 변경 사항을 푸시하면 저장소를 이전 버전으로 되돌릴 수 있습니다.

저장소에서 가져오지 않도록 다른 개발자에게 경고할 가치가 있습니다. 예를 들어 보겠습니다.

예 2:

이전에 로컬 리포지토리에서 커밋을 제거하는 방법에 대해 논의했습니다. 삭제한 커밋을 원격 저장소에 이미 푸시했다고 가정해 보겠습니다.

다음 컨텍스트에서 git push 명령을 사용하여 원격 저장소를 되돌릴 수 있습니다.

git push --force origin HEAD

위의 명령은 로컬 저장소의 상태에 따라 원격 저장소를 덮어씁니다. 다른 개발자가 변경한 내용은 무시됩니다.

더 안전한 옵션은 다음과 같습니다.

git push --force-with-lease oriin HEAD

아래 명령을 사용하여 분기를 지정할 수 있습니다.

git push -f origin <sha1-commit-hash>:branch_name

일부 원격 리포지토리에는 위의 명령을 거부하는 receive.denyNonFastForwards 사전 설정이 있습니다. 이러한 경우 분기를 삭제하고 다시 만들어야 합니다.

git push origin : <branch name>
git push origin <sha1-commit-hash>:ref/heads/<branch name>