Git은 일반적으로 사용되는 버전 관리 도구이며 프로젝트 개발에 널리 사용됩니다. 프로젝트 개발 중에 우리는 일반적으로 코드 제출, 브랜치 병합 및 기타 작업을 포함하여 버전 제어 및 관리를 위해 다양한 git 명령을 사용합니다. 그러나 경우에 따라 민감한 정보를 삭제하거나 불필요한 커밋 기록을 삭제하는 등 Git 기록을 지워야 할 수도 있습니다. 아래에서는 Git 기록을 지우는 방법에 대해 설명합니다.
1. 백업
Git 기록 삭제 작업을 수행하기 전에 작업 중 오류나 예상치 못한 상황을 방지하기 위해 백업이 필요합니다. 필요한 경우 코드 베이스를 복원할 수 있도록 현재 코드 베이스를 안전한 장소에 백업하는 것이 중요합니다. Git의 패키징 명령을 사용하여 프로젝트를 압축 파일로 백업할 수 있습니다. 예:
git archive --format zip --output backup.zip HEAD
이 명령은 현재 코드 베이스를 ZIP 파일로 패키징하고 backup.zip에 저장합니다.
2. 기록 지우기
단일 파일의 기록을 삭제하려면 다음 명령을 사용하면 됩니다.
$ git filter-branch --index-filter 'git rm --cached --ignore-unmatch path/to/file' --prune-empty -- --all
이 명령은 대상 파일을 기록에서 완전히 삭제합니다. 그 중 path/to/file
은 지워질 파일 경로를 나타냅니다. path/to/file
表示要清除的文件路径。
有时候,我们需要删除某个 commit 及其之后的历史纪录。为此,我们可以使用 Git 的 rebase
命令来实现。具体来说,我们需要执行以下步骤:
1)使用以下命令展示项目中所有的 commit
$ git log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short
这个命令会显示项目中所有的 commit 记录。
2)决定要清除的 commit 的 SHA 值
我们需要查找要删除 commit 的 SHA 值,可以从下面的 commit 日志中获取:
commit 55d4d98de4caf2ac1a8f783624c58e533500f3d7 Author: John Doe <john@doe.com> Date: Fri Apr 30 16:01:07 2021 -0700 Added new feature
上述示例中的 commit SHA 值是 55d4d98de4caf2ac1a8f783624c58e533500f3d7
.
3)使用以下命令将要清除的 commit 弹出
$ git rebase -i <commit-hash>^
比如,我们要删除 SHA 值为 55d4d98de4caf2ac1a8f783624c58e533500f3d7
的 commit 及其之后的历史纪录,可以执行以下命令:
$ git rebase -i 55d4d98de4caf2ac1a8f783624c58e533500f3d7^
4)编辑交互窗口以将目标 commit 弹出
在交互模式中,我们需要将需要删除的目标 commit 标记为 “drop”,然后将文件保存退出即可。示例如下所示:
pick 44a0c2c this is an invalid commit, which should be removed drop 55d4d98 Added new feature
在上例中,55d4d98
历史纪录将被删除,而 44a0c2c
때로는 커밋과 후속 기록을 삭제해야 할 때가 있습니다. 이를 위해 Git의 rebase
명령을 사용할 수 있습니다. 구체적으로 다음 단계를 수행해야 합니다.
1) 프로젝트의 모든 커밋을 표시하려면 다음 명령을 사용하세요.
$ git filter-branch --force --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch ./' --tag-name-filter cat -- --all
이 명령은 프로젝트의 모든 커밋 기록을 표시합니다.
2) 삭제할 커밋의 SHA 값을 결정합니다
삭제할 커밋의 SHA 값을 찾아야 하며, 이는 아래 커밋 로그에서 얻을 수 있습니다.
$ git push origin --force --all
위의 커밋 SHA 값 예는 55d4d98de4caf2ac1a8f783624c58e533500f3d7 code>입니다.
55d4d98de4caf2ac1a8f783624c인 커밋을 삭제하려는 경우 58e533500f3d7 및 후속 기록 기록을 사용하면 다음 명령을 실행할 수 있습니다. 🎜rrreee 🎜4) 대화형 창을 편집하여 대상 커밋을 표시합니다. 🎜🎜대화형 모드에서는 삭제해야 할 대상 커밋을 표시해야 합니다. "drop"으로 지정한 다음 파일을 저장하고 종료합니다. 예는 다음과 같습니다. 🎜rrreee🎜위 예에서는 <code>55d4d98
기록이 삭제되고 44a0c2c
기록이 최신 커밋이 됩니다. 🎜🎜5) 이전 기록을 지우려면 다음 명령을 사용하세요. 🎜rrreee🎜 이 명령은 "drop"으로 표시된 커밋과 후속 커밋을 지울 수 있습니다. 🎜🎜6) 원격 창고로 푸시🎜🎜마지막으로 원격 창고의 내역 기록을 업데이트하고 내역 기록의 정확성을 보장하려면 원격 창고로 강제 푸시해야 합니다. 🎜rrreee🎜다음과 같이 작동해야 한다는 점에 유의하세요. 위 명령을 실행할 때 주의하고 코드 베이스를 백업했는지 확인하세요. 한번 삭제하면 복원이 불가능하기 때문입니다. 🎜🎜요약🎜🎜이 글에서는 Git을 사용하여 기록을 삭제하는 방법을 소개합니다. 이러한 작업을 수행하기 전에 기록 기록 작업의 결과를 고려하고 돌이킬 수 없는 손실을 방지하기 위해 백업을 만들어야 합니다. 동시에, 역사적 기록을 지우는 것을 지양하고 필요한 경우에만 활용하도록 노력해야 합니다. 🎜위 내용은 git의 기록 지우기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!