gpt4 book ai didi

Git - 'assume-unchanged' 和 'skip-worktree' 之间的区别

转载 作者:IT王子 更新时间:2023-10-29 01:11:20 27 4
gpt4 key购买 nike

我对文件进行了本地更改,但不想提交到我的存储库。它是用于在服务器上构建应用程序的配置文件,但我想使用不同的设置在本地构建。自然地,当我将“git status”作为要暂存的东西时,文件总是会出现。我想 stash 此特定更改而不提交它。我不会对该文件进行任何其他更改。

澄清一下,使用 .gitignore 不是我想要的,因为这只会阻止添加新文件。我想忽略对存储库中已有文件的更改。

经过一番挖掘,我看到了 2 个选项:assume-unchangedskip-worktree。前一个问题here谈论它们,但并没有真正解释它们的区别。

这两个命令有何不同?为什么有人会使用其中一种?

最佳答案

你想要skip-worktree

assume-unchanged 专为检查一组文件是否已被修改的情况而设计;当您设置该位时,git(当然)假定与索引的该部分对应的文件在工作副本中未被修改。所以它避免了乱七八糟的 stat 调用。每当文件在索引中的条目更改时(因此,当文件在上游更改时),该位就会丢失。

skip-worktree 不止于此:即使 git 知道文件已被修改(或需要由reset --hard 或类似的),它会假装它还没有,而是使用索引中的版本。这一直持续到索引被丢弃。

这里有对这种差异的后果和典型用例的一个很好的总结:http://fallengamer.livejournal.com/93321.html .

来自那篇文章:

  • --assume-unchanged 假定开发人员不应更改文件。此标志用于提高性能 不更改的文件夹(如 SDK)。
  • --skip-worktree 在您指示 git 不要触及特定文件时很有用,因为开发人员应该更改它。例如,如果上游的主存储库托管了一些生产就绪的配置文件,并且您不想意外地提交对这些文件的更改,--skip-worktree 正是你想要什么。

关于Git - 'assume-unchanged' 和 'skip-worktree' 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13630849/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com