我注意到刚才我的的.gitconfig - 文件是公开我的回购。它包含了我的秘密令牌。

git-add -u文件并提交。我不知道这个命令是否删除该文件从以前的承诺了。

我想肯定和搜索文件在我以前的提交,使得在我的历史上还没有这样的文件。

你怎么能搜索在以前提交的文件?


我运行

git filter-branch --tree-filter 'rm .gitconfig' master     # Thanks to Greg!

我得到

Rewrite 84dabfa2ea195ce9aad0309216858b302150017c (1/25)rm: .gitconfig: No such file or directory
tree filter failed: rm .gitconfig

该错误信息显示我,我没有在我提交历史文件。

有没有办法搜索的文件在我提交记录这样的,我并不需要运行清除地看到,我没有在我提交历史文件?

有帮助吗?

解决方案

<强>短的答案:

git filter-branch --tree-filter 'rm -f .gitconfig' master   

请注意的-f

<强>长答案:

rm将返回一个非零返回代码时文件不存在。 filter-branch认为这是一个错误,停止重写。添加-f避免这种情况。

注意:

有一种替代命令:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch .gitconfig' master

这是要快得多。该命令在手册页的实施例部分。

其他提示

要删除所有过去历史的Git一个文件,你需要重写所有过去的提交使用类似的 git filter-branch 。但是,这样做使你的新树不能合并与过去所有的树木,所以做到这一点要小心。

复位所有ewvisions在储存库到全局默认值(的.gitconfig)。

git filter-branch -f --commit-filter 'GIT_COMMITTER_NAME="`git config --get user.name`";GIT_AUTHOR_NAME="`git config --get user.name`";GIT_COMMITTER_EMAIL="git config --get user.email";GIT_AUTHOR_EMAIL="`git config --get user.email`";git commit-tree "$@";' HEAD
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top