使用git fetch
从远程获取后,我们需要使用类似
git merge origin/master
我想知道此命令是否也同时执行git commit
?订单origin/master
重要吗?我可以写master/original
吗?
答案 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处记录新的提交以指定合并和两个父项。
此外,如果由于冲突而无法进行合并,则会更新您的工作副本以反映存在冲突的事实,然后在您修复它们时,您手动进行记录合并的提交。