可以git跟踪文件但不显示更新?

时间:2011-05-08 10:15:58

标签: git

用例:我们有一些我们想要跟踪的项目元数据文件,但很少(如果有的话)提交,尽管它们一直在本地更新(不同的用户有不同的项目路径)。在常规场景中,除非明确要求,否则任何用户都不应提交这些文件。

Git ignore用于未跟踪的文件。

是否有类似的功能让git忽略跟踪文件?是否有一种我可以在中央回购中更改的方法,并且会反映所有用户?

3 个答案:

答案 0 :(得分:3)

$ git update-index --assume-unchanged <filename>

但这仅适用于本地。

答案 1 :(得分:3)

  

我是否可以在中央回购中更改所述方法,并反映所有用户?

否则在一般(分布式)上下文中:任何类型的挂钩或进程都不能在中心位置“更改”并被所有分布式下游存储库选中。

如果您的用户在central template之后创建了他们的回购,那么一些默认挂钩可以引用中央脚本(即,如果我们在同一网络上的用户上发言,则共享磁盘中的所有用户都可以访问该脚本)


adymitrukanswer主张使用开发分支,因此不会将私有更改提交给“公共”分支(即推/拉分支)。<登记/> 这很好,但是:

  • 这不是一个自动过程(可强制执行所有回购),而是每个开发人员单独采取的行动(或因为忘记而不采取行动)
  • 这涉及从您需要发布的提交中整理出您不想发布的提交,在任何情况下都可以使用开发分支进行,除非在这种情况下,开发人员必须执行额外的记忆步骤对那些特定文件的任何更改都必须合并到公共分支。永远。 (假如他/她实际上花时间在单独的提交中隔离这些特定的更改!)

最好使用 filter driver (在.gitattributes文件中声明,可以通过克隆传播):

enter image description here

  • smudge脚本:

    • 能够识别元数据文件的内容
    • 在结帐时保存其内容
  • clean脚本:

    • 能够识别元数据文件的内容
    • 决定是否需要修改
    • 在提交
    • 上恢复这些元数据文件的初始内容

答案 2 :(得分:1)

使用开发分支。根据您的环境提交具体的变更。返回合并我们的战略。现在,这些更改将永远不会分享给公共分支。其他答案缺少使用开发分支的重点。