힘내 기록에서 커밋 제거
Git에서 리포지토리에 기밀 정보를 추가하는 것은 좋은 생각이 아닙니다. 그렇게 하면 우리의 모든 비밀이 망가지고 우리가 원하지 않는 전 세계에 공개될 수 있기 때문입니다. 그러나 때때로 우리는 의도적으로 또는 의도하지 않게 가지지 말아야 할 것을 추가합니다.
이제 문제를 분류하고 Git 명령을 사용하여 저장소에서 기밀 정보를 제거해야 합니다. 리포지토리의 히스토리를 다양한 형식으로 보관하는 데 있어 Git이 보다 실질적인 배경을 가지고 있기 때문에 Git 히스토리에서 제거하기가 쉽지 않습니다.
이를 위해 우리는 이 실수를 철저히 청소하고 해당 저장소의 분기에서 불필요한 항목을 제거하는 데 훨씬 더 주의를 기울여야 합니다.
Git에는 커밋의 상태와 크기에 따라 커밋을 취소할 수 있는 다양한 도구가 있습니다. 실수와 변경 사항을 원격 저장소에 푸시했는지 여부에 따라 두 가지 방법으로 삭제할 수 있습니다.
이 튜토리얼에서는 커밋을 로컬에서 제거하는 방법과 Git 명령을 사용하여 강제로 제거하는 두 가지 방법에 대해 알아봅니다.
Git에서 로컬로 변경 사항 제거
최신 커밋 제거
git reset
명령을 사용하여 최신 커밋을 삭제할 수 있습니다. 이 명령은 변경 사항을 실행 취소하는 것으로 잘 알려져 있습니다.
그러나 다음 Git 명령을 통해 가장 최근 항목을 삭제할 수 있습니다.
git reset --hard HEAD~1
HEAD~1
은 HEAD
이전에 하나의 커밋을 지정합니다. git reset
명령으로 지정된 커밋을 삭제하기 위해 HEAD~N
플래그를 사용합니다.
git reset --hard HEAD~N
또 다른 방법은 정확한 커밋 해시 ID를 언급하여 이를 수행할 수 있습니다. 다음 명령은 이를 수행하는 방법입니다.
git reset --hard <sha1-commit-hash>
중간 커밋 취소
git revert
명령을 사용하여 특정 중간 커밋에 의해 변경된 내용을 취소하는 새 커밋을 삽입할 수 있습니다. 다음 Git 명령을 통해 수행됩니다.
git revert <sha1-commit-hash>
여기서 요점은 git revert
가 특정 중간 커밋을 삭제하지 않는다는 것입니다. 기록에서 완전히 삭제하려면 다음과 같이 대화형 인수와 함께 git rebase
를 실행해야 합니다.
git rebase -i <sha1-commit-hash>
삭제된 커밋 복구
커밋을 삭제한 후 다시 원할 경우 다음 명령을 사용하여 복구할 수 있습니다.
git reflog
Git에서 강제로 변경 사항 제거
팀원이나 우리가 이미 원격 저장소에 변경 사항을 푸시한 경우 Git은 플래그 --force
플래그와 함께 git push
명령을 실행하여 이 상황을 원활하게 제어할 수 있습니다.
이렇게 하면 원본
인 기본 원격 리포지토리에서 커밋이 삭제되고 나중에 사용할 수 있도록 분기에서 사용할 수 있습니다.
git push origin HEAD --force
메모:
이 방법은 안전하지 않으며 사용 측면에서 매우 중요합니다. 동료의 로컬 리포지토리를 엉망으로 만들 수 있습니다. 우리 팀의 누군가가 이 분기를 당기면 작업에 병합되고 이 분기가 다시 푸시백됩니다.
따라서 동일한 저장소에서 새 분기로 시작하는 것이 더 좋고 편리합니다.
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