【问题标题】:Merging two branches into another without a new commit在没有新提交的情况下将两个分支合并到另一个分支
【发布时间】:2016-12-02 16:33:49
【问题描述】:

我在将两个分支合并到另一个分支时遇到了一些问题。

我有两个功能分支,每个分支都在 master 之前提交 1 个。

feature-branch-1 - 1 commit 'alpha' ahead of master 
feature-branch-2 - 1 commit 'beta' ahead of master 

而且我有一个带有 1 次提交的主分支。

master - 1 commit 'gamma'

我想运行这样的东西。

git checkout master
git merge feature-branch-1 --no-commit
git merge feature-branch-2 --no-commit

最终得到一个包含三个提交的主分支。

master - 3 commit 'gamma', 'alpha', 'beta'

is sue 是第一个合并的作品。然后第二次合并有这个消息。

自动合并进展顺利;在按要求提交之前停止

我怎样才能成功地将这些分支合并在一起?

【问题讨论】:

  • 这毫无意义。您的标题说“不提交”,但您明确表示您希望提交之后存在。你是否想要个人提交?如果您希望在合并两个分支后在master 上存在三个提交,每个分支都有一个提交,那么您只需要一个正常的合并。只需执行git merge feature-branch-1; git merge feature-branch-2。这是一个没有额外选项的常规合并,可以在两个分支上快进master--no-commit 选项显然进行提交,所以如果你想要提交,请不要​​使用它。
  • @meagar 这不能按预期工作,第一次合并有效,第二次让我手动提交新的提交,这是不受欢迎的。
  • 这不是git merge 的行为方式,除非你的第二次提交不能干净地合并,在这种情况下你问错了问题。答案是 git merge branch-1 后跟git merge branch-2,两者的行为相同并且都创建提交。
  • @meagar 有什么快速的方法可以将branch-1 合并到master 然后将master 合并到branch-2 并将branch-2 合并到`master?都没有特定的合并提交?
  • git checkout master; git merge branch-1; git checkout branch-2; git merge master; git checkout master; git merge branch-2?同样,假设这些都是快进合并,您无需担心合并提交或git merge 的特殊选项。这是git merge 的完全普通的正常用例。我仍然很不清楚你在问什么,或者你为什么认为这里会涉及合并提交。

标签: git merge


【解决方案1】:

试试这个:

$ git checkout master
$ git merge feature-branch-1 --no-commit --no-ff
$ git merge feature-branch-2 --no-commit --no-ff   

【讨论】:

  • 这不会提交任何东西。它将合并中的所有文件留在头部。
  • 好的。如果你只做git merge feature-branch-1git merge feature-branch-2。有用吗?
  • 不,在这种情况下,第一个合并被转发,第二个合并未提交。
  • 好的。如果您 cherry-pick 来自功能分支的两次提交,那么它有效吗? git cherry-pick <commit-hash-of-branch1>, git cherry-pick <commit-hash-of-branch2>
【解决方案2】:

任何使用--no-commit 打印成功的自动合并:

自动合并进展顺利;在按要求提交之前停止

所以你会看到这两个git merge 命令。

尽管如此,Git 有一个“章鱼式”合并策略,用于进行一次将多个分支连接在一起的合并:

git checkout master
git merge feature-branch-1 feature-branch-2

在理想情况下,它会做这样的事情,即提交图。如果我们开始:

          o--o--o---o   <-- feature-branch-1
         /
...--o--o-----o----o    <-- master
         \
          o--o--o---o   <-- feature-branch-2

然后(在提交章鱼合并后)我们最终得到:

          o--o--o---o     <-- feature-branch-1
         /           \
...--o--o-----o----o--o   <-- master
         \           /
          o--o--o---o     <-- feature-branch-2

然而,进行两次单独的合并并没有真正的优势:

          o--o--o---o         <-- feature-branch-1
         /           \
...--o--o-----o----o--o--o    <-- master
         \              /
          o--o--o------o      <-- feature-branch-2

章鱼合并中的“汉堡包”或“飞碟”图表不会为您提供使用两个分离合并方法中的“船”图表时所缺乏的能力。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-06
    • 2016-03-23
    • 2018-03-12
    • 1970-01-01
    • 2021-12-29
    • 2013-11-09
    • 1970-01-01
    相关资源
    最近更新 更多