git合并源/主做什么?

git合并源/主做什么?,git,git-merge,Git,Git Merge,使用git fetch从远程获取后,我们需要使用 git merge origin/master 我想知道这个命令是否同时执行git commit?订单origin/master重要吗?我可以写master/original?这样做的目的是将称为origin/master的分支合并到当前分支中。顺序非常重要。单词origin是指您克隆存储库的位置,即存储库的来源,单词master只是一个分支名称,但是master通常用作主分支,或者一些其他系统称之为主干分支 Merge可能需要根据您的开发状态

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

git merge origin/master

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

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

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


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

git merge origin/master
可以执行以下两种操作之一(或错误)

在第一种情况下,它创建了一个新的提交,该提交有两个父级:当前
,以及ref
源代码/master
指向的提交(除非您正在做一些有趣的事情,否则很可能是(指向的本地指针)名为
origin
的远程计算机上名为
master
的分支,尽管这是完全传统的)

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

它不直接调用
gitcommit
,这是一个面向用户的更高级别(用git的说法)命令

调用
git merge master/original
将尝试将
master/original
解析为提交,这几乎可以肯定(同样,除非您故意做了什么)
origin/master
不相同。如果您碰巧有一个名为
master
的远程主机,其分支名为
original
,它将创建一个新的提交,并将其作为第二个父级


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

您的答案有两处不正确。第一:“将当前分支与称为“原始分支/主分支”的分支合并”不正确,因为
origin/master
已合并到当前分支中。或者这可能是我在这里看到的模棱两可,那么请澄清。其次,
git merge
在某些情况下执行提交(例如,当没有明确告知不要执行它们,以及何时可以以快进方式执行合并时。是的,这就是我的意思,我已经修改了措辞。你是说快进实际上就是承诺吗?我的印象是快进更像是在你自己的基础上拼接新的发展历史请注意这一点:“(…)
git merge topic
将重播在
topic
分支上所做的更改,因为它与
master
(…)直到其当前提交位于
主控
之上,并在新提交中记录结果,同时记录两个父提交的名称和用户描述更改的日志消息”。我相信这是非常清楚的。它确实执行提交(除非检测到一些冲突,并且您需要首先解决它).啊,当然,我明白了。但是,只有当您的开发出现分歧时,才进行提交,而不是如果可以使用快进方式进行提交。文档中说,在这种情况下,不需要新的提交来存储组合的历史;相反,头(连同索引)更新为指向指定的提交,而不创建额外的合并提交。我将修复我的答案。当您不希望创建提交()时,使用
--no commit
可能更安全。您确实应该自己完成。