git --assume-unchanged,git rm -r --cached和--skip-worktree之间的区别

时间:2015-09-02 10:57:42

标签: git gitignore

嗯,问题很清楚。在哪种情况下我应该使用 git --assume-unchanged ,或者在什么情况下应该使用 git rm -r --cached

此外, - skip-worktree 正在增加混乱。

最好与 .gitignore 一起使用?

目标是防止配置文件被推送到github repo,因为不同的部署机器上通常有不同的设置。因此,每台机器都有自己的配置文件。

1 个答案:

答案 0 :(得分:2)

<强>假设-不变

  • 它假定开发人员不应更改文件。这个标志是 用于提高SDK等不变文件夹的性能。
  • 仅适用于本地性能问题。如果Git可以确定    这些文件以更轻的方式改变,它会。
  • 本地设置:“假设未更改”位存储在索引中,    不在存储库本身。因此,fetch / pull / push不会传播    设置到其他存储库或从其他存储库设置
  • 假设 - 忽略机制不应滥用。它是 不是Git承诺Git会一直考虑这些路径 未经修改的

rm -r --cached

  • 从工作树和索引中删除文件

  • git rm --cached从repo中删除文件而不是从中删除它 本地文件系统(git rm将从本地文件中删除该文件 系统)

<强>跳过worktree

  • 当您指示git不触及特定内容时,skip-worktree非常有用 文件,因为开发人员应该改变它。例如,如果 主存储库上游托管一些生产就绪配置 文件,您不希望意外地提交更改 文件, - skip-worktree正是你想要的。请参阅this帖子 在SO

哪个更适合与.gitignore一起使用?

它取决于。如果您已经在git中添加了配置文件,那么最好使用

  

git rm -r --cached

检查this帖子。