我对不想提交到存储库的文件进行了本地更改。它是用于在服务器上构建应用程序的配置文件,但我想使用不同的设置在本地构建。自然,当我将“git status”作为要暂存的内容时,该文件总是会显示出来。我想隐藏这个特定的更改而不是提交它。我不会对文件进行任何其他更改。
澄清一下,使用 .gitignore 不是我想要的,因为这只会阻止添加新文件。我想忽略对存储库中已有文件的更改。
经过一番挖掘,我看到了 2 个选项:assume-unchanged和skip-worktree.以前的问题在这里谈到了它们,但并没有真正解释它们的区别。
assume-unchanged
skip-worktree
这两个命令有何不同?为什么有人会使用其中一个?
你想要skip-worktree。
assume-unchanged专为检查一组文件是否已被修改的情况而设计;当您设置该位时,git(当然)假定与索引的该部分对应的文件在工作副本中没有被修改。所以它避免了混乱的stat电话。每当索引中的文件条目发生更改时(因此,当文件在上游更改时),该位都会丢失。
git
stat
skip-worktree不仅如此:即使git 知道 文件已被修改(或需要由 areset --hard等修改),它也会假装它没有被修改,而是使用索引中的版本。这一直持续到索引被丢弃。
reset --hard
此处对这种差异的影响和典型用例进行了很好的总结:http: //fallengamer.livejournal.com/93321.html。
从那篇文章:
--assume-unchanged
--skip-worktree