28

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

git merge origin/master

我想知道这个命令是否也git commit同时执行?顺序origin/master重要吗?我可以写master/original吗?

4

2 回答 2

27

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

在第一种情况下,它创建一个具有两个父级的新提交: currentHEAD和 ref 指向的提交origin/master(除非你在做一些有趣的事情,这很可能是(本地指针)命名的master分支一个名为 的遥控器origin,尽管这完全是传统的)。

在第二种情况下,不需要树级合并,而不是创建一个新的提交,它更新当前签出的 ref 以指向与 . 所指向的相同的提交origin/master。(这称为快进合并——当您通过命令行标志合并时,git 可以被定向到总是或从不这样做)。

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

调用git merge master/original将尝试解决master/original提交,这几乎可以肯定(同样,除非你已经做了一些深思熟虑的事情)origin/master. 如果你碰巧有一个名为 的远程分支,它master有一个名为 的分支original,它将创建一个新的提交,并将其作为第二个父级。

您可能会发现git help rev-parse有助于破译 git 如何尝试将 ref 名称或其他符号解析为提交。

于 2012-06-21T01:25:42.207 回答
12

这样做是将称为 origin/master 的分支合并到您当前的分支中。顺序非常重要。origin这个词是指你克隆你的仓库的地方,即仓库的起源,master这个词只是一个分支名称,但是master通常用作主分支,或者其他一些系统称之为主干分支.

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

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

于 2012-06-21T01:08:59.037 回答