在“git merge origin / branch”中遗忘斜杠的分歧

时间:2012-05-14 18:02:07

标签: git

Per this article,我试图让自己养成在更新工作副本时明确获取和合并的习惯。但是,今天我在发出命令时发了一个拼写错误:

$ git fetch origin
$ git merge origin asdf

请注意,我在merge命令中使用了空格而不是正斜杠。因为它似乎已经产生了预期的效果,直到我已经推动它已经添加了一个奇怪的措辞提交到日志之前我没有注意到:

commit 65f0037bed926c338cb95e7437e7f7f407028d9f
Author: Me <my_email@example.com>
Date:   Mon May 14 09:36:44 2012 -0700

    Merge branch 'asdf', remote-tracking branch 'origin' into asdf

现在我想知道这实际上是否有任何负面影响。似乎它将参数视为两个单独的分支规范以合并到当前分支中,并且“origin”将隐式扩展为“origin / asdf” - 这正是我实际想要的。那时,我不知道为什么它甚至会允许“合并分支'asdf'进入asdf”。

这只是一个令人尴尬的无操作吗?或者我是否在我的存储库历史记录中引入了可能存在问题的构造?

编辑:输出git cat-file commit 65f0037b

tree 74ed9ead4b82e4e56bd5656ee10375f8f0fcb60d
parent 3bc2a37031a4a391aa4da64c22e3f55148cd23e2
author Me <my_email@example.com> 1337013404 -0700
committer Me <my_email@example.com> 1337013404 -0700

    Merge branch 'asdf', remote-tracking branch 'origin' into asdf

1 个答案:

答案 0 :(得分:4)

让我们从merge命令的手册页开始:

   git merge [-n] [--stat] [--no-commit] [--squash]
           [-s <strategy>] [-X <strategy-option>]
           [--[no-]rerere-autoupdate] [-m <msg>] [<commit>...]

因此,如果没有所有选项,merge会接受提交列表。如果您已经在分支asdf上并输入:

git merge asdf

......这是一个无操作:将分支与自身合并意味着无所事事。如果你输入:

git merge origin

然后git将查找与名为origin的远程关联的默认分支。在branch -a的输出中:

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

remotes/origin/HEAD指向默认分支,因此:

git merge origin

相当于:

git merge origin/master

因此,假设您输入的遥控器上的默认分支为master

git merge origin asdf

你得到了:

git merge origin/master

如果默认分支是asdf,则得到:

git merge origin/asdf