git archive --format zip --output backup.zip HEAD
这个命令会将当前代码库打包成一个 ZIP 文件,并将其保存到 backup.zip 中二、清除历史纪录(方法一)使用命令清除单个文件的历史纪录删除单个文件的历史纪录是一项相对简单的操作,我们可以使用以下命令来实现:$ git filter-branch --index-filter \'git rm --cached \--ignore-unmatch path/to/file' \--prune-empty -- --all
这个命令会将目标文件从历史纪录中彻底删除其中,path/to/file 表示要清除的文件路径使用命令清除 commit 的历史纪录有时候,我们需要删除某个 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 55d4d98de4caf2ac1a8f783624c58e533500f3d7Author: 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 removeddrop 55d4d98 Added new feature
在上例中,55d4d98 历史纪录将被删除,而 44a0c2c 历史纪录将成为最新的 commit5)使用以下命令清除旧的历史纪录$ git filter-branch \--force --prune-empty \--index-filter 'git rm -rf --cached \--ignore-unmatch ./' \--tag-name-filter cat -- --all
这个命令可以清除掉被标记为 “drop” 的 commit 及其之后的 commit6)推送到远程仓库最后,我们需要强制推送到远程仓库,以更新远程仓库中的历史纪录,保证历史记录的正确性:$ git push origin --force --all
请注意,在执行以上命令时应谨慎操作,并确保已备份代码库因为一旦删除,就无法恢复三、清除历史纪录(方法二use)使用 git checkout --orphan newBranch 清理git历史操作步骤:1) 创建新分支git checkout --orphan newBranch
2) 添加所有文件(除了.gitignore中声明排除的)git add -A
3) 提交跟踪过的文件(Committhe changes)git commit -am “init commit”
4) 删除master分支git branch -D master
5) 重命名当前分支为mastergit branch -m master
6) 重新指定远端git remote set-url origin http://xxx
7) 强制提交到远程master分支git push -f origin master
通过以上几步就可以简单地把一个Git仓库的历史提交记录清除掉了(图片来源网络,侵删)
0 评论