碰撞版本时为什么会出现合并冲突?

时间:2013-04-02 20:02:26

标签: git version-control

我正在使用git / github来维护我的项目。我正在遵循一个简单的分支模型(master,dev,hotfix-,feature-,release)。我的应用程序包含一个配置文件(config.php),我在其中定义版本号。最近,我不得不做一个修补程序。我从主服务器分支了修补程序分支,进行了我的更改,然后碰到了版本(例如:1.1.2到1.1.3)。当我将修补程序合并回master时,我没有遇到任何问题。当我将修补程序分支合并到dev中时,我在版本号行上与我的配置文件发生了合并冲突。在我的开发分支中,我有一个不同的版本号,所以我假设这是造成冲突的原因。我怎么能在将来避免这种情况?我是否需要在不同的时间和/或分支处碰撞版本?

2 个答案:

答案 0 :(得分:3)

您可以使用“我们的”或“他们的”策略来告诉我们如何自行解决冲突,但我不认为您可以在特定的行上使用这些策略。您可能希望避免开发人员更新版本号,而是在git-hook上执行此操作。

谷歌搜索出现了这个问题:http://cd34.com/blog/programming/using-git-to-generate-an-automatic-version-number/

编辑: 或者,您可以简单地标记版本号,并让git完全忽略它。您是否部署过程使用某些派生版本号替换令牌 - 增量或基于git SHA1或其他一些数字。

有趣的话题,我很快就需要为我的团队做些什么。

答案 1 :(得分:2)

合并时无法避免这种情况 - 对同一文件中同一行的两次更改最终会发生冲突。

您是否考虑使用樱桃镐来避免挑选版本凹凸?另一种选择是不对硬件进行硬编码,而是从git自动导出(例如,发布分支根据提交的数量得到一个数字,一个修补程序分支根据分支名称得到一个后缀)