EGit:如何防止快进合并?

时间:2012-07-24 10:02:23

标签: eclipse git merge egit

我工作的公司为我提供了将他们的Java项目从CVS迁移到Git的项目。出于几个原因,他们不想使用除Eclipse之外的其他工具。所以我们坚持使用EGit。

我搜索了很多,以找到适合我们项目的工作流程。这个似乎非常相关并且被许多人使用:http://nvie.com/posts/a-successful-git-branching-model/

问题在于,当我们尝试使用提交,分支和&合并后,发生了很多快速合并。快进合并的问题在于它使松散成为分支的起点。

我们工作的客户希望能够选择下一版本中哪些功能,哪些功能不会。这是我们想要从CVS迁移到Git的主要原因之一,因为在CVS中似乎没有简单的方法来查找由于功能#1而修改了哪些文件以及哪些文件被修改为功能#2。在git中,我们可以为功能#1& #2并找到为这些功能修改的文件。但是,由于快进,就像回到CVS一样,我们无法知道哪个是功能#1,哪个是功能#2。

那么有什么方法可以防止快速合并?我们试图将这些配置放在Eclipse中:

[core]
mergeoptions = --no-ff

[merge]
ff = false

但它并没有阻止EGit进行快进合并。如果没有使用JGit / EGit实现此功能,是否有任何其他方法可以使用Egit遵循客户需要的工作流程(选择要发布的功能的能力)。使用命令行可能会解决问题,但是如果可以将它保存在Eclipse中,那就太好了。

谢谢

3 个答案:

答案 0 :(得分:7)

EGit bug 336933是关于支持这些选项的,并且已通过EGit 2.3修复,请参阅release notes

如果您还没有使用2.3,那么(丑陋的)解决方法可能如下所示:

  • 合并前,请使用历史记录视图
  • 检查是否会导致快进合并
  • 如果可以的话,在master(或你想要合并到的分支)中提交一个不相关的文件
  • 然后进行合并

答案 1 :(得分:3)

请注意,使用 release of Egit 2.3 ,Egit现在支持该选项:

  

支持git merge --no-ff作为EGit偏好。

完成bug 335091

答案 2 :(得分:1)

看起来这是不可能的,因为JGit不支持某些合并选项,包括--no-ff。

请参阅this post,有关于此的错误报告。