用于删除意外推送或提交的文件的实用 Git 命令
我经常需要重置提交,因为我提交了一个不想要的文件,或者忘记在提交中添加内容。偶尔,我还需要从远程仓库(而不是本地)删除文件,因为我不小心推送了它。我总是忘记命令,所以这里提供给大家参考 :)
删除已推送到 git 存储库的文件
您可以使用以下命令从 git repo 中删除文件,例如,如果您不小心将其推送上去或者您只是不想再将其保留在那里。
git rm --cached name_of_file
这不会在本地删除它,因此如果你想将它保存在电脑上以供参考而不在 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
接下来运行:
git rm --cached <file-name>
删除不想提交的文件。这会将其从提交中移除,并重新设置为未跟踪文件。你可以快速运行 git status 来确认。
现在,您可以通过运行以下命令照常提交其他文件:
git commit -m "my commit message"
然后可以将删除的文件添加到单独的提交中!
文章来源:https://dev.to/morinoko/useful-git-commands-for-removing-accidentally-pushed-or-comfilled-files-2ld