2011-09-29 51 views
21

我尝试从git存储库中删除不必要的文件。该文件最初被添加,现在他们在几个分支。我想要的只是停止跟踪文件中的更改,我不在乎应该保留哪些更改,但是我需要该文件保留在文件系统上。git从存储库中删除文件,但将其保留在文件系统上

我尝试以下

git filter-branch --index-filter "git rm --cached --ignore-unmatch file_to_remove" HEAD 

但是从文件系统删除的文件是什么不必要的。

+1

我通常复制文件之前运行该命令的地方。在git删除它们之后,我将它们添加到.gitignore,然后将副本移回。 –

+0

嗯,好的破解。我没有想过它 –

+1

@misha你想停止跟踪它们,还是将它们从存储库中完全删除?你在你的问题中说一个,在另一个评论中说另一个。 – Andy

回答

27

刚:

git rm --cached file [file ...] 

当然,你需要确保有问题的文件被添加到您的.gitignore所以它们不会马上重新提出

+1

我想从存储库中从所有分支完全删除它们。当我像你说的那样,文件停止被跟踪,但我不能切换分支,git说'需要文件级别的合并。留在分支'。 –

2

如果你想保留的文件在资源库中,你可以使用:
git update-index --assume-unchanged <fileName>

这使得在索引文件的当前版本,但你可以改变这一切你想和Git会忽略这些茶nges。

+0

我发现他的方法只是作为一种**临时解决方法。您将被禁止检出文件内容与当前分支不同的另一个分支。 –

0

签出并运行git clean为每个分支。

git的清洁 - 通过递归删除不在版本控制下的文件,从当前目录开始从工作树

清理工作树移除未跟踪文件。

https://git-scm.com/docs/git-clean

相关问题