힘내 기록에서 커밋 제거

Abdul Jabbar 2023년6월20일
  1. Git에서 로컬로 변경 사항 제거
  2. Git에서 강제로 변경 사항 제거
힘내 기록에서 커밋 제거

Git에서 리포지토리에 기밀 정보를 추가하는 것은 좋은 생각이 아닙니다. 그렇게 하면 우리의 모든 비밀이 망가지고 우리가 원하지 않는 전 세계에 공개될 수 있기 때문입니다. 그러나 때때로 우리는 의도적으로 또는 의도하지 않게 가지지 말아야 할 것을 추가합니다.

이제 문제를 분류하고 Git 명령을 사용하여 저장소에서 기밀 정보를 제거해야 합니다. 리포지토리의 히스토리를 다양한 형식으로 보관하는 데 있어 Git이 보다 실질적인 배경을 가지고 있기 때문에 Git 히스토리에서 제거하기가 쉽지 않습니다.

이를 위해 우리는 이 실수를 철저히 청소하고 해당 저장소의 분기에서 불필요한 항목을 제거하는 데 훨씬 더 주의를 기울여야 합니다.

Git에는 커밋의 상태와 크기에 따라 커밋을 취소할 수 있는 다양한 도구가 있습니다. 실수와 변경 사항을 원격 저장소에 푸시했는지 여부에 따라 두 가지 방법으로 삭제할 수 있습니다.

이 튜토리얼에서는 커밋을 로컬에서 제거하는 방법과 Git 명령을 사용하여 강제로 제거하는 두 가지 방법에 대해 알아봅니다.

Git에서 로컬로 변경 사항 제거

최신 커밋 제거

git reset 명령을 사용하여 최신 커밋을 삭제할 수 있습니다. 이 명령은 변경 사항을 실행 취소하는 것으로 잘 알려져 있습니다.

그러나 다음 Git 명령을 통해 가장 최근 항목을 삭제할 수 있습니다.

git reset --hard HEAD~1

HEAD~1HEAD 이전에 하나의 커밋을 지정합니다. 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 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 Remove