EGit:如何防止快进式合并?

8
我所在的公司让我将他们的Java项目从CVS迁移到Git,由于某些原因,他们不想使用除Eclipse以外的其他工具。所以我们只能使用EGit。
我花了很多时间寻找适合我们项目的工作流程。这个看起来相当相关并被许多人使用:http://nvie.com/posts/a-successful-git-branching-model/ 问题是,当我们尝试使用提交、分支和合并与EGit一起使用时,出现了许多快进式合并。快进式合并的问题在于它使你失去分支的起点。
我们服务的客户希望能够选择下一个版本中包含哪些功能,哪些不包含。这是我们想从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个回答

7
EGit bug 336933 的修复使这些选项得到支持,此问题在 EGit 2.3 中得到修复,详情请见发行说明
如果您还没有使用 2.3 版本,则(丑陋的)解决方法如下:
  • 在合并之前,请使用“历史”视图检查是否会导致快进式合并
  • 如果是,则在主分支(或您想要合并到的分支)的一个非相关文件中提交更改
  • 然后进行合并

3
请注意,随着 Egit 2.3的发布,Egit 现在支持该选项:

支持将 git merge --no-ff 作为 EGit 首选项。

这样就完成了bug 335091

1

看起来不可能实现,因为JGit不支持一些合并选项,包括--no-ff。

请参见此帖子,其中有一个错误报告。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接