【问题标题】:What is a "merge bubble"?什么是“合并泡沫”?
【发布时间】:2014-10-07 15:15:02
【问题描述】:

我听说过关于 Git 的“合并气泡”。我相当精通 Git,但不认为自己是专家。我听说过一些关于合并气泡的负面消息;什么是 Git 中的“合并气泡”,它有什么问题,我该如何避免它?

【问题讨论】:

    标签: git


    【解决方案1】:

    合并气泡 是 Git 中的“简单合并”,不需要解决任何冲突。当您使用--graph 选项时,会在显示合并的日志中出现气泡。例如,如果您运行git log --graph,您可能会看到如下内容:

    | |
    * |   commit d79f3c4e129356b055c659ee5be28081c1f38aa1
    |\ \  Merge: 09bf1ed 4ef9a23
    | | | Author: Peter <peter@example.com>
    | | | Date:   Wed Sep 17 17:21:07 2014 -0400
    | | |
    | | |     Merge branch 'master' of http://fictitiousrepo.visualstudio.com/DefaultCollection/_git/fictitiousproject
    | | |
    | * | commit 4ef9a2387f0d4db39a6cab8ff8f531815935c305
    | | | Author: Andrew <andrew@example>
    | | | Date:   Tue Sep 16 11:54:14 2014 -0500
    | | |
    | | |     updated changelog
    | | |
    * | | commit 09bf1ed0125d77c26b5760939c125998bb046e9a
    |/ /  Author: Peter <peter@example.com>
    | |   Date:   Wed Sep 17 17:20:30 2014 -0400
    | | 
    | |       fixed some bugs
    

    线条“凸出”的地方是“合并气泡”。这似乎无伤大雅;但许多人认为它的可读性比可能发生的要差得多,就像这样:

    |
    * commit 09bf1ed0125d77c26b5760939c125998bb046e9a
    | Author: Peter <peter@example.com>
    | Date:   Wed Sep 17 17:20:30 2014 -0400
    |
    |     fixed some bugs
    |
    * commit 4ef9a2387f0d4db39a6cab8ff8f531815935c305
    | Author: Andrew <andrew@example>
    | Date:   Tue Sep 16 11:54:14 2014 -0500
    |
    |     updated changelog
    |
    

    ...因为确实不需要 merge

    这通常发生在通过自动合并来接受拉取请求时。有时这是由于“合并拉取请求”按钮过去在 Github 上的工作方式。

    为避免合并气泡与拉取请求,一种策略是手动合并。例如:

    git checkout master
    git remote add remoteorigin git://remotegithost.com/remotegitrepo/remotegitproject
    git fetch remoteorigin 
    git merge remoteorigin/remoteprojectbranch
    git push origin master
    

    要从拉取请求中删除最近提交的合并气泡(当您尚未推送时),一种策略是首先存储您当前的更改,将您的头部重置为气泡之前的提交,使用 rebase 拉取,然后推送。例如:

    git stash save
    git reset --hard HEAD~1
    git pull --rebase
    git push origin HEAD
    

    参考: http://adammonsen.com/post/1172

    【讨论】:

    • 这就像......我见过的最好的自我回答问题。超级扎实,谢谢分享。
    • 你说“曾经”;难道 GitHub 拉取请求仍然是这样吗?
    • @EdwardThomson 我添加了一个参考,该参考首先详细介绍了 Github 上下文中的气泡,但提供了一个更新,表明在 Github 上合并拉取请求已更改。我还没有找到关于那篇文章中提到的变化的任何“官方”信息。
    • 当两个人碰巧在同一个分支上工作并且没有使用git pull --rebase.gitconfig 中的等效设置时,我经常看到这些情况。不用说,它肯定不是 Github 特有的。
    猜你喜欢
    • 1970-01-01
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 2013-10-17
    相关资源
    最近更新 更多