我怎样才能从git仓库中完全删除文件?
我最近注意到我的文本编辑器使用的项目文件(以及其他一些垃圾)已经添加了项目的git仓库。 由于它们实际上并不是项目的一部分,所以我想删除它们,但是git rm
不会从存储库中删除旧版本,而且我也找不到任何看起来很有希望的东西。
你想要的工具是git filter-branch
。 其用法在这里描述,但基本上是:
$ git filter-branch --tree-filter 'rm -f my_file' HEAD
将从每次提交中删除“my_file”。
注意,这会重写每一个提交,所以如果你推入一个远程仓库,你必须(a)强制更新,(b)所有从你那里拉出来的人现在都会有重复的提交(因为你改写了历史logging)描述在git rebase
手册页上 。
这是git filter-branch
用处,但是要注意,你的repo历史logging会改变,并且在历史重写之后提交哈希将会有所不同。
如果你还想释放空间,我build议你使用git forget-blob
,因为git filter-branch
本身不会让git忘记你的文件,因为它仍然可以被remotes,reflog,tags等引用。
git forget-blob main.c.swp
你可以在这里获得更多的信息