2011-05-08 60 views
4

使用案例:我们有一些我们想要跟踪的项目元数据文件,但很少(如果有的话)提交,尽管它们始终在本地更新(不同的用户有不同的项目路径)。在正常情况下,除非明确要求,否则用户不应该提交这些文件。可以跟踪文件,但不显示它们更新?

Git ignore用于未跟踪文件。

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

+0

[git:忽略* *版本控制的文件]的可能重复(http://stackoverflow.com/questions/5011390/git-ignoring-a-file-which-is-version-controlled) – 2011-05-08 10:38:25

+0

I猜猜,这个问题是Git Duplicates SO竞赛的赢家。 – 2011-05-08 10:39:06

+1

@Pavel:除了这些重复内容之外,没有一个在OP的上下文中提到了实际的解决方案,这是一个过滤器驱动程序。请参阅下面的答案。 – VonC 2011-05-08 10:49:47

回答

3

是否有一种方法可以在中央仓库中进行更改,并反映所有用户?

没有在一般的(分布式)上下文中:任何钩子或进程都不能在中心位置“改变”并且被所有分布式下游回购站选择。

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


adymitrukanswer认为使用开发分支,因此不承诺‘公开’分支(即推即分支/拉)私人变化。
这都很好,但:

  • 这不是一个自动的过程(可执行的所有回购),但采取的每个开发人员独立(或不采取,因为他们忘了)
  • 这涉及一个动作从你需要发布的内容中挑选出你不想发布的提交,除非在这种情况下,开发人员必须执行额外的步骤来记住对的任何更改那些特定文件必须而不是被合并到公共分支。永远。 (只要他/她真的花时间在单独的提交中隔离这些特定更改!)

这将是更好地使用filter driver(其在.gitattributes文件中声明和可以通过克隆传播)有:

enter image description here

  • a smudge脚本:

    • 能够识别您的元数据文件
    • 节省结账其内容的内容
  • 一个clean脚本:

    • 能够识别你的元的内容 - 数据文件
    • 决定他们的修改是否需要提交
    • 恢复这些元数据文件的初始内容提交
+0

你的答案总是出现,谢谢你! – 2011-05-08 11:43:03

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

虽然这只适用于本地。

+0

值得注意的是相反的动作:'git update-index --no-assume-unchanged ' – 2011-05-08 11:43:37

1

使用开发分支。针对您的环境提交具体的更改。与我们的战略重新融合。现在这些更改将永远不会被分享到公共分支。其他答案缺少使用开发分支的要点。

+0

好点:我们错过了“开发分支”:+1。但是这并没有解决OP的具体需求,即强制以某种方式对所有这些文件进行修改。 -1。我已经在你的回答中附带了评论。 – VonC 2011-05-09 05:31:53

+0

是的。像@VonC提到的那样,这并不是真正的问题,而是相关的。谢谢。 – 2011-05-09 09:39:34