0

Git 是一个令人敬畏的 SCM 野兽。然而,我对一个问题无休止地困惑。

我有一个配置文件,它在(via )上.gitignore的分支中而不是在master分支中。然而,在我的分支上,它已签出并工作了一段时间,文件正在以某种方式被跟踪,当我再次退出时,文件保留在我的仓库中,但对于我团队中的其他人来说消失了。我也跑了,作为最后的手段,我跑了:origingit show -- config/mongo.ymlorigin/mastergit rmgit checkoutorigin/mastergit rm --cached

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

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

我怎么能把它放在我的里面,然后在and.gitignore之后显示它?git rm config/mongo.ymlgit checkout origin/master -- config/mongo.yml

4

1 回答 1

0

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

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

git ls-files --cached --ignored --exclude-standard在我无法解释其行为的每个结帐中。不管怎样,我经常这样做。

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

此外,尝试克隆到相邻目录,它将硬链接除签出内容之外的所有内容,因此空间不是一个因素。这将为您提供一个原始的工作树,而不会丢失当前工作树的状态,您可以在那里进行试验并git clean -dfx随意清理任何混乱。

于 2012-05-11T03:11:27.340 回答