即使在git rm和git checkout之后,也会跟踪Git被忽略的文件

时间:2012-05-10 20:49:09

标签: git version-control gitx

Git是SCM的一个很棒的野兽。然而,我对一个问题无休止地感到困惑。

我有一个配置文件,它位于.gitignore而不是master上的origin分支(通过git show -- config/mongo.yml)。但是,在我origin/master检出并已工作一段时间的分支上,正在以某种方式跟踪文件,当git rmgit checkout再次从origin/master出来时,文件保留在我的回购中,但我的团队中的其他人都消失了。我也跑了git rm --cached,作为最后的手段,我跑了:

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

我已经多次使用它来对被忽略的文件产生良好的效果,并且分支小到可以重做。但是,这似乎不是解决方法。我真的只想知道这个“为什么”并理解这个问题,因为这是解决方案的3/4! :)

我怎样才能在.gitignore中显示它,然后在git rm config/mongo.ymlgit checkout origin/master -- config/mongo.yml之后显示跟踪?

1 个答案:

答案 0 :(得分:0)

当事情奇怪的时候我尝试过的事情:

从.gitignore中删除该文件并切换到没有该文件的提交(并且在.gitignore中没有该文件)。

git ls-files --cached --ignored --exclude-standard在每次结帐时我的行为都很难解释。无论如何,我经常这样做。

git log --all --decorate --oneline --graph path/to/your/cuckoo,显示文件状态或内容发生变化的所有地方。你可以让gitk做同样的事情,提出一个新的视图。

此外,尝试克隆到邻居目录,除了签出的内容之外,它将硬链接所有内容,因此空间不是一个因素。这会让你在原有的工作树上不失状态,你可以在那里进行实验并git clean -dfx随便清理任何混乱。