git merge origin branchname 是什么意思?

3

请注意命令中缺少“/”符号。

我是一名Git新手。

我正在两台不同的机器上(一个开发机器,一个测试机器),在相同的代码库和分支上工作。我在开发机器上推送了代码。

git push origin branchname

在测试机上,我执行了以下操作:
git fetch origin 
git merge origin branchname

Git报告“已经是最新的了。太好了!”但我知道这不是真的。
最终我做了正确的操作。
git merge origin/branchname 

当我犯错并执行以下操作时会发生什么:
git merge origin branchname 

http://git-scm.com/docs/git-merge提到了“章鱼合并”,但是“origin”是特殊的(不是分支名称),因此我认为这种情况不会发生。


是的,重复了。我已经投票关闭了我的问题。那我应该删除它吗? - David Poole
1
现在已经有人回答了你的问题,所以你将无法删除它。不过,重复问题并非全都是坏事;它们可以帮助那些可能使用不同搜索查询的人们汇聚到解决问题的方案上。 - jub0bs
2个回答

4
这意味着“合并分支originbranchname到当前分支”――实际上请求将另外两个分支合并到您的当前分支中。请注意,origin是一个远程分支;当用作提交标识符时,它等同于origin/HEAD(通常指向origin/master)。
因此,假设您已经检出了branchname,则您正在尝试将该分支与自身合并,这是一个无操作。听起来origin/HEAD已经“合并”了(该提交是branchname的祖先),因此也被解决为无操作。
换句话说,您尝试将两个提交合并到您的分支中,而这些提交已经成为您的分支历史的一部分,因此 Git 正确地没有执行任何操作。

在这个上下文中使用“三路合并”这个术语可能会引起混淆。你应该写成“将两个分支合并到另一个分支中”或类似的表述。 - jub0bs
1
@Jubobs 公正的观点,有时我会忘记三方合并通常是指如何合并文件。在这种情况下,这不是一个不准确的术语,但根据该术语通常的用法可能会产生误导,我理解这一点。 - cdhowie
你的回答中可能值得一提的一个奇怪之处是,在执行 git merge origin 后,Git 建议的默认提交信息是 Merge remote-tracking branch 'origin',这是具有误导性的。 - jub0bs

-2

当你在远程仓库上有一个分支名为branchname时,在本地调用origin/brachname,即在本地复制远程分支。origin/brachname是一个分支。

所以你所做的就是从远程(origin)获取分支(branchname)。现在你有了一个本地副本(origin/branchname),然后将其合并到本地分支(branchname)中。


这似乎是重申了原帖已经知道的信息,但没有解决OP不理解的特定形式的Git命令(git merge origin branchname)问题。因此,它实际上并没有回答问题。 - cdhowie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接