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>
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