📌  相关文章
📜  如何从 git 历史记录中删除一个文件 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:08:13.831000             🧑  作者: Mango

如何从 git 历史记录中删除一个文件 - Shell/Bash

当我们在 Git 中误提交了某个文件或者想要删除某一文件的历史记录时,我们需要使用 Git 命令行工具 Shell/Bash 中的相关命令来完成这项任务。

Step 1: 找到要删除的文件的提交记录

首先,我们要先找到要删除的文件在 Git 中的提交记录。可以使用 git log 命令查看,例如:

$ git log --follow path/to/file.ext

这将会显示该文件的所有提交记录,如下所示:

commit 3536b3dc7d08e6b8390fff481b58f8b9a235156f (HEAD -> master)
Author: John Doe <johndoe@example.com>
Date:   Sun Apr 4 14:19:36 2021 +0800

    Update file.ext

commit 95be02f103efb2cbc2bf16c50a4922ac9c5d5fed
Author: John Doe <johndoe@example.com>
Date:   Fri Mar 26 17:12:03 2021 +0800

    Add file.ext
Step 2: 使用 Git 命令删除文件的历史记录

在找到要删除的文件的提交记录之后,我们可以使用 git rebase 命令来修改 Git 的提交历史记录,如下所示:

$ git rebase -i <commit-id>

这里的 <commit-id> 为要修改的提交记录的 ID,例如上面的 95be02f。执行该命令后,会进入一个类似于 Vim 的编辑器,可以看到类似于以下的内容:

pick 95be02f Add file.ext
pick 3536b3d Update file.ext

# Rebase acd98ef..3536b3d onto acd98ef (2 commands)

我们要做的是将要删除的文件的那一行前面的 pick 改为 edit,然后保存并退出编辑器。如下所示:

edit 95be02f Add file.ext
pick 3536b3d Update file.ext

# Rebase acd98ef..3536b3d onto acd98ef (2 commands)

执行完以上操作后, Git 会自动回到要删除的文件的那次提交记录,这时我们可以直接删除该文件,然后使用以下命令将修改保存:

$ git add .
$ git commit --amend --no-edit

这会将删除文件的修改与前面的提交记录合并,从而将删除操作加入到 Git 的提交历史中。

最后,使用以下命令将 Git 仓库中的所有提交记录强制推送到远程仓库:

$ git push -f origin master
结论

这就是如何在 Git 中删除一个文件的历史记录的方法。要点就是要记住要修改本地 Git 提交历史记录,并强制推送到远程仓库。同时,我们也要注意这种操作会影响到其他人在 Git 仓库中的历史记录,因此需要谨慎进行。