Git의 원격 리포지토리에서 커밋 삭제

Abdul Jabbar 2023년1월30일
  1. Git의 로컬 리포지토리에서 커밋 삭제
  2. Git의 원격 리포지토리에서 커밋 삭제
Git의 원격 리포지토리에서 커밋 삭제

Git으로 작업할 때 커밋이 잘못되어 제거해야 한다는 것을 깨닫는 경우가 있습니다. 그 이유는 클라이언트가 제품에서 해당 작업을 원하지 않기 때문일 수 있습니다.

버그를 도입했거나 잘못된 구현을 커밋했기 때문에 다시 작업해야 합니다.

이 기사에서는 Git 명령을 사용하여 로컬 및 원격 리포지토리를 삭제하고 이러한 모든 리포지토리를 정리하는 방법에 대해 설명합니다.

Git에서는 두 가지 다른 절차를 통해 커밋을 삭제할 수 있습니다. 그리고 이러한 절차는 변경 사항이 원격 분기로 푸시되는지 여부에 따라 달라집니다.

Git의 로컬 리포지토리에서 커밋 삭제

변경 사항이 아직 원격 저장소에 푸시되지 않은 경우 다음 명령을 통해 로컬에서 최근 커밋을 삭제할 수 있습니다.

git reset --hard HEAD~1

위에서 언급한 명령은 폴더(작업 트리)에서 수행된 모든 변경 사항을 삭제하고 HEADHEAD 이전의 최신 커밋으로 이동합니다.

특정 커밋까지 커밋을 삭제하려면 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 Jabbar
Abdul Jabbar avatar Abdul Jabbar avatar

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

관련 문장 - Git Delete