题
我注意到刚才我的的.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
不隶属于 StackOverflow