Git是SCM的一个很棒的野兽。然而,我对一个问题无休止地感到困惑。
我有一个配置文件,它位于.gitignore
而不是master
上的origin
分支(通过git show -- config/mongo.yml
)。但是,在我origin/master
检出并已工作一段时间的分支上,正在以某种方式跟踪文件,当git rm
和git checkout
再次从origin/master
出来时,文件保留在我的回购中,但我的团队中的其他人都消失了。我也跑了git rm --cached
,作为最后的手段,我跑了:
git update-index --assume-unchanged -- config/mongo.yml
我已经多次使用它来对被忽略的文件产生良好的效果,并且分支小到可以重做。但是,这似乎不是解决方法。我真的只想知道这个“为什么”并理解这个问题,因为这是解决方案的3/4! :)
我怎样才能在.gitignore
中显示它,然后在git rm config/mongo.yml
和git checkout origin/master -- config/mongo.yml
之后显示跟踪?
答案 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
随便清理任何混乱。