从git修订版中删除特定的文件/文件夹
问题描述:
假设我发现有一些文件不在我的git修订版本中。如密码,API密钥和商业秘密文件。从git修订版中删除特定的文件/文件夹
有没有办法删除它们出现在修订中的文件?并且仍然保留该修订中的其余文件?
答
git filter-branch
可能是有用的。这允许你重写一系列过去的提交,改变提交的内容。
如果您所做的更改从未离开您的本地存储库,那么这将起作用。如果您在某个地方推动了有问题的更改,或者如果有人从您那里推出了这些更改,那么您在所有人的存储库中都会遇到更大的问题。
但是,要解决你的本地库:
git filter-branch --index-filter 'git rm --cached --ignore-unmatch bad-file1.txt bad-file2.txt' master..abc
这意味着:
git filter-branch
:让我们重新编写一些提交!--index-filter
:更改每个提交的索引而不实际在磁盘上检出它。'git rm --cached --ignore-unmatch bad-file1.txt bad-file2.txt'
:对于每一个承诺,unstage两个文件,如果它们存在。master..abc
:做这个分支上所有提交ABC回到它从主分支分叉。您也可以说“master~3
”来重写过去3次提交或其他任何range of revisions。您还可以使用“-- --all
”(两个破折号,空格,两个破折号“all”)重写存储库中的所有内容。
这就是它。谢谢,我不小心检查了日志文件和tmp文件:/ – Bill 2012-07-15 17:02:06