git merge origin / master做什么?

时间:2012-06-21 01:04:19

标签: git git-merge

使用git fetch从远程获取后,我们需要使用类似

的内容
git merge origin/master

我想知道此命令是否也同时执行git commit?订单origin/master重要吗?我可以写master/original吗?

2 个答案:

答案 0 :(得分:24)

git merge origin/master可以做两件事之一(或错误)。

在第一种情况下,它创建一个具有两个父项的新提交:当前HEAD,以及ref origin/master指向的提交(除非你做了一些有趣的事情,这是可能是(本地指针)名为master的远程名为origin的分支,尽管这是完全传统的。)

在第二种情况下,如果不需要树级合并,而不是创建新的提交,它会将当前签出的ref更新为指向origin/master指向的相同提交。 (这称为快进合并 - 当您通过命令行标志合并时,git可以始终指向或永远不会执行此操作。)

它不直接调用git commit,这是一个用于用户的更高级别(git-parlance中的 porcelain )命令。

调用git merge master/original会尝试将master/original解析为提交,几乎可以肯定(再次,除非您已经做了深思熟虑的事情)与{相同} {1}}。如果您碰巧有一个名为origin/master的远程,它有一个名为master的分支,它将创建一个新的提交,并将其作为第二个父提交。

您可能会发现original有助于解释git如何尝试将引用名称或其他注释解析为提交。

答案 1 :(得分:11)

这样做是将称为origin / master的分支合并到当前分支中。订单非常重要。单词 origin 表示克隆存储库的位置,即存储库的来源,单词 master 只是一个分支名称,但是master通常用作主分支,或 trunk 分支,正如其他一些系统所称。

合并可能需要根据开发状态进行提交。如果你的历史没有偏离原点,它可以做所谓的快进 ---所有需要做的就是把新的历史放在你的上面。如果您的开发与原点不同,那么如果可以在没有冲突的情况下完成合并,则完成合并并在HEAD处记录新的提交以指定合并和两个父项。

此外,如果由于冲突而无法进行合并,则会更新您的工作副本以反映存在冲突的事实,然后在您修复它们时,您手动进行记录合并的提交。