用于删除意外推送或提交的文件的实用 Git 命令

2025-05-25

用于删除意外推送或提交的文件的实用 Git 命令

我经常需要重置提交,因为我提交了一个不想要的文件,或者忘记在提交中添加内容。偶尔,我还需要从远程仓库(而不是本地)删除文件,因为我不小心推送了它。我总是忘记命令,所以这里提供给大家参考 :)

删除已推送到 git 存储库的文件

您可以使用以下命令从 git repo 中删除文件,例如,如果您不小心将其推送上去或者您只是不想再将其保留在那里。

git rm --cached name_of_file
Enter fullscreen mode Exit fullscreen mode

这不会在本地删除它,因此如果你想将它保存在电脑上以供参考而不在 Git 上共享,它是安全的。为了防止它再次被推送到 Git,只需将文件添加到你的.gitignore.

当然,如果您不再需要该文件,只需将其从系统中删除即可。

但是!如果文件包含密码或密钥等敏感数据,那么您需要做更多的事情,因为提交仍然可以在存储库的历史记录中找到。

如果推送的文件包含密码等敏感数据

正如下面Ölbaum 的评论所指出的(谢谢!),上述方法不会从提交历史记录中完全删除该文件。

要从历史记录中删除敏感文件,您可以使用名为BFG Repo-Cleaner的开源工具或使用 git 的git filter-branch

与 相比,BFG Repo-Cleaner 显然让这项工作更加轻松快捷filter-branch。它允许您删除文件,或者用文本 替换文件中的密码或密钥***REMOVED***。您还可以删除意外推送的大文件。

我自己没用过 BFG,不过可以看看BFG Repo-Cleaner 的文档和下载页面,看看怎么用。说明相当直接。

要了解git filter-branch,请查看 git帮助站点上的使用 filter-branch文章和git filter-branch 文档

删除上次提交时意外提交的文件(但尚未推送)

我有提交所有内容的习惯,git add .所以有时我会意外地添加我实际上想要在单独提交中添加的文件。

要从尚未推送的提交中删除某些文件,首先,使用以下命令撤消最后一次提交:

git reset --soft HEAD^1
Enter fullscreen mode Exit fullscreen mode

接下来运行:

git rm --cached <file-name>
Enter fullscreen mode Exit fullscreen mode

删除不想提交的文件。这会将其从提交中移除,并重新设置为未跟踪文件。你可以快速运行 git status 来确认。

现在,您可以通过运行以下命令照常提交其他文件:

git commit -m "my commit message"
Enter fullscreen mode Exit fullscreen mode

然后可以将删除的文件添加到单独的提交中!

文章来源:https://dev.to/morinoko/useful-git-commands-for-removing-accidentally-pushed-or-comfilled-files-2ld
PREV
适用于远程工作的最佳 VS Code 扩展
NEXT
告别 Postman!让我们轻松在团队中分享您的 REST API 调用!