【问题标题】:EGit : How to prevent fast-forward merge?EGit:如何防止快进合并?
【发布时间】:2012-07-24 10:02:23
【问题描述】:

我工作的公司给了我将他们的 java 项目从 CVS 转移到 Git 的项目。出于几个原因,他们不想使用 Eclipse 以外的其他工具。所以我们被 EGit 困住了。

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

问题在于,当我们尝试使用提交、分支和合并来查看它如何与 EGit 一起工作时,发生了很多快进合并。快进合并的问题在于它使您松散分支的起点。

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

那么有什么办法可以阻止快进合并?我们尝试将这些配置放在 Eclipse 中:

[core]
mergeoptions = --no-ff

[merge]
ff = false

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

谢谢

【问题讨论】:

    标签: eclipse git merge egit


    【解决方案1】:

    EGit bug 336933 是关于支持这些选项的,它已在 EGit 2.3 中修复,请参阅release notes

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

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

    【讨论】:

      【解决方案2】:

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

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

      这就完成了bug 335091

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2021-12-05
          • 2011-08-27
          • 1970-01-01
          • 1970-01-01
          • 2023-03-08
          • 1970-01-01
          • 2010-10-26
          • 1970-01-01
          相关资源
          最近更新 更多