1

我刚才注意到我的.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

错误消息表明我的提交历史记录中没有该文件。

有什么方法可以在我的提交历史记录中搜索文件,这样我就不需要运行删除来查看我的提交历史记录中没有该文件?

4

3 回答 3

4

要从所有过去的 Git 历史记录中删除文件,您需要使用类似git filter-branch. 但是,这样做会使您的新树无法与所有过去的树合并,因此请谨慎操作。

于 2009-06-28T01:18:53.700 回答
4

简短的回答:

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

这要快得多。此命令记录在手册页的示例部分中。

于 2009-06-28T10:32:12.060 回答
1

将存储库中的所有 ewvision 重置为全局默认值 (.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
于 2011-04-13T16:43:10.863 回答