【问题标题】:How does a local merge differ from a merge on Github?本地合并与 Github 上的合并有何不同?
【发布时间】:2017-12-01 10:28:43
【问题描述】:

当合并一个分支到主分支时,“洞察”中的“网络”部分给了我一个我刚刚合并到主分支的分支的视图:

Branch merge into master: from github

但是,在本地执行此操作时,在 shell 中,似乎一切正常,但在洞察力中,合并的分支消失了:

Branch merge into master: from shell

这些是我为了得到这个结果而遵循的步骤:

$ git init
$ git remote add origin (url)
$ touch README.md
$ git add .
$ git commit -m "1"
$ git push -u origin master
$ git checkout -b branch1
$ touch 2.txt
$ git add .
$ git commit -m "2"
$ git push origin branch1
$ git checkout master
$ git merge branch1
$ git push

是不是就等于从 Github 合并,也就是说 Github 的洞察力有点bug?或者本地合并(就像我所做的那样)和从 Github 完成的合并之间有区别吗?怎么回事?

【问题讨论】:

  • 你正在本地进行 FF 合并。
  • 本地合并之后的push 不是在 Github 上进行合并吗?无论如何,为什么创建的分支在洞察力中消失了?
  • 不,push 将提交发送到 GitHub 上的另一个 Git,然后请求(礼貌地或强制地取决于您的 git push 命令)他们更改其分支名称指针以匹配您的建议/命令.在这一点上永远不会发生合并。

标签: git github merge


【解决方案1】:

作为tkausl commented,你运行git merge branch1。这允许git merge 在可能的情况下执行快进非真正合并操作,而这里可能的。

GitHub 上的“合并”点击按钮默认执行相当于 git merge --no-ff,1 的操作,这会阻止 git merge 执行快进操作。如果无法进行快进操作,--no-ff 将不起作用,因此您不会看到不同的结果。

如果您想避免在本地进行快进合并,请使用--no-ff


1更准确地说,它似乎默认为您上次所做的任何事情,但最初这相当于 git merge --no-ff:只是合并,而不是 GitHub 的 rebase-and-merge,而不是 GitHub 的 squash -并合并。

【讨论】:

    猜你喜欢
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-15
    • 2017-03-21
    • 2020-06-29
    • 2012-12-08
    • 2019-10-13
    相关资源
    最近更新 更多