2013-07-28 51 views
0

我有一个几个版本的项目,他们中的每一个显然都运行在自己的git分支上。 该项目有一个跟踪的配置文件(谷歌应用程序引擎的app.yaml),其中包含版本名称。如何防止git跟踪单行?

我想通过一种方法告诉git在合并从一个分支到另一个分支的错误修复时忽略该行。

有没有一种智能的方式如此呢?

回答

1

是的,是有办法做到这一点。对于这种情况,Git支持custom merge drivers

在您的合并驱动程序中,您应该检出文件的所有三个版本并删除所有这些文件。然后对结果运行git merge-file。一些指针也可以在git merge-one-file helper中找到。完成后,将ours版本的行读取到结果中。

如果你真的想要没有跟踪那一行,你可以使用smudge and clean filters。但我不认为这就是你想要的。

2

简短回答:

有趣的回答:git在英国英语的意思是一个不愉快或可鄙的人

实际答案:

的Git被设计用于跟踪您的项目/库的变化,而不是单个文件。

Git的设计是托沃兹与Linux的经验 维持一个大型分布式开发项目,与来自同一 项目,迫切需要生产获得的文件系统的性能他 成竹在胸沿着合成工作制简称 。

我不认为有这样做的方式(这将是智能创造)。

PS:回复可能会让人厌恶,但git背后的意识形态是“不要”让人们在单个文件的移动上工作。

你可以做的一件事是,在分支之间创建差异并在生成/合并补丁时完全忽略特定文件。不知道它是否确实适用/有益。

你可以尝试另一种解决方案是:"Merge" Specific Files from Another Branch

+0

在不同分支机构中存在不合并差异的问题非常普遍,它必须有一个智能解决方案。我正在考虑一些钩子,它会从一个模板生成这个文件,但是这对于一个相当简单的需求来说太复杂了 – akiva

+0

我不知道“google app engine的app.yaml”,但是当问题出现时,问题就会以类似的形式出现并且例如发行说明已更新。我已经看到的解决方案/解决方法是,这些更改进入单个单独的提交,并且在将更改重新集成到主服务器时将合并与此发布提交之前的提交完成。 – mnagel