Git의 원격 리포지토리에서 커밋 삭제
Git으로 작업할 때 커밋이 잘못되어 제거해야 한다는 것을 깨닫는 경우가 있습니다. 그 이유는 클라이언트가 제품에서 해당 작업을 원하지 않기 때문일 수 있습니다.
버그를 도입했거나 잘못된 구현을 커밋했기 때문에 다시 작업해야 합니다.
이 기사에서는 Git 명령을 사용하여 로컬 및 원격 리포지토리를 삭제하고 이러한 모든 리포지토리를 정리하는 방법에 대해 설명합니다.
Git에서는 두 가지 다른 절차를 통해 커밋을 삭제할 수 있습니다. 그리고 이러한 절차는 변경 사항이 원격 분기로 푸시되는지 여부에 따라 달라집니다.
Git의 로컬 리포지토리에서 커밋 삭제
변경 사항이 아직 원격 저장소에 푸시되지 않은 경우 다음 명령을 통해 로컬에서 최근 커밋을 삭제할 수 있습니다.
git reset --hard HEAD~1
위에서 언급한 명령은 폴더(작업 트리)에서 수행된 모든 변경 사항을 삭제하고 HEAD
를 HEAD
이전의 최신 커밋으로 이동합니다.
특정 커밋까지 커밋을 삭제하려면 git log
를 실행하여 특정 커밋 ID를 검색합니다. 그런 다음 언급된 다음 명령을 사용하여 해당 커밋을 삭제합니다.
git reset --hard <sha1-commit-id>
앞에서 언급한 이 명령은 작업 트리에서 수행된 모든 변경 사항을 삭제하고 HEAD
를 선택한 커밋으로 이동합니다.
Git의 원격 리포지토리에서 커밋 삭제
원격 저장소에서 커밋을 삭제하려면 새 HEAD
커밋을 강제 푸시
합니다. 또는 변경 사항을 이미 원격 저장소에 푸시한 경우 다음 명령을 실행합니다.
git push origin HEAD --force
다른 사람이 이 분기를 가져왔다면 새 분기를 시작하는 것이 좋습니다. 그렇지 않으면 작업에 결합하고 이 경우 동일한 분기를 다시 푸시해야 합니다.
이렇게 하면 로컬 및 원격 리포지토리 모두에서 커밋이 삭제됩니다. 로컬이 아닌 원격에서만 삭제해야 하는 경우 다음 명령을 실행합니다.
git push origin +HEAD^:branch_name
이 명령을 실행하기 전에 작업 디렉토리 변경 사항이 모두 삭제되므로 다시 한 번 살펴봐야 합니다.
삭제 후 해당 커밋을 다시 검색하려면 저장소가 가비지 수집되지 않는 한 <git reflog>
에 있는 것이 더 좋습니다.
Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.
LinkedIn