忽略git中修改(但未提交)的文件?


181

我可以告诉git忽略已修改(删除)但不应该提交的文件吗?

情况是,我在存储库中有一个子目录,其中包含我完全不感兴趣的内容,因此我删除了该目录以防止它显示在自动完成等中(在IDE中)。

但是现在,如果我将该文件夹添加到.gitignore中,则没有任何变化,所有内容都显示为git status删除。

有没有办法让git忽略它呢?

(或者,当我使用git-svn时,我可以将更改提交到本地git并确保不将其传递给svn存储库吗?)


您可能希望将它们从索引中完全删除,而不只是在回购索引中将它们标记为未修改。因此,尽管您仍将文件保存在工作目录中,但可以完全删除repo索引,而git甚至根本不会认为它已经存在。请在下面的答案中查看链接。
— MaurerPower

Answers:


274

查阅git-update-index手册页和--assume-unchanged位以及相关内容。

当我遇到您的问题时,我会这样做

git update-index --assume-unchanged dir-im-removing/

或特定文件

git update-index --assume-unchanged config/database.yml

3
您能以某种方式列出所有被忽略的文件吗?
— Zitrax 2010年

21
您可以通过git update-index --no-assume-unchanged config/database.yml
— Denis Kniazhev

1
如果没有较新的解决方案,请参见下面的Dave L的答案以获取更新的解决方案--assume-unchanged。
— Ben Challenor 2013年

2
是否可以将其添加到存储库配置文件中,而不是每次都手动运行此命令?
— Tim Boland 2014年

1
它会在下次提交时显示为已修改吗?我不希望它永远不变。
— Pranav Nandan '18

41

一个更新更好的选择是 git update-index --skip-worktree在硬重置或拉动进行新更改时不会丢失。

请参见http://schacon.github.com/git/git-update-index.html上的手册页

并在http://fallengamer.livejournal.com/93321.html进行比较


9
要注意的一个缺点是,一旦使用隐藏了文件的修改skip-worktree,查找这些文件将变得很麻烦。我知道的唯一方法是git ls-files -v |grep -v '^H'。而且,许多GUI工具都不知道此功能,如果例如checkout由于“隐藏”的修改文件而失败,则可能会产生有趣的错误。
— sleske 2012年

我从未能够理解任何git doc文件。所以这没有太大帮助。(每个文档文件都假定您了解其他所有文档文件的精妙之处!)
— Scott Biggs

7

使用此代码

git update-index --assume-unchanged file-name

1
非常有意思。我必须在我的Maven项目中使用密码,但是我不想将其发布在git存储库上,因此我将占位符放在本地,属性中不带任何值,我提交了密码,然后插入了密码,但是标记了文件与建议的命令保持不变。因此密码未发布。
— Stefano Scarpanti,

6

跟踪的文件不可忽略,因此您必须首先将其从索引中删除。添加一个.gitignore忽略您不需要的目录的,然后将其删除,并使用删除所有散乱的内容git rm --cached。


1
嗯,我试试看,但是然后我列出了所有已删除的文件。我是否应该提交该文件,并且--cached将导致它不会被推送到远程服务器?还是我得到了……。错误?对我来说最重要的是不要破坏远程(svn)存储库。

1
您不能提交任何没有出现在索引中的内容。git rm-缓存所有您不想提交的内容,然后在本地添加一个带有“ *”的.gitignore文件。现在,无论您添加了多少git,您都不会再在索引中看到这些文件。
— 约翰·费米内拉

嗯,我想我现在知道--cached了。它只会从索引中删除内容,而只剩下工作树了。 ,将其从工作树中删除而不触及索引。.或者我可以某种方式使用它吗?

6

我通常要做的是

git存储

git what-else

git stash适用

git隐藏


10
接下来,您也可以“ git stash pop”一次执行最后两个操作(尽管如果需要,“ git stash clear”将清除所有存储条目)。
— Groxx
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.