Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“忘记斜杠”的后果;“git合并来源/分支机构”;_Git - Fatal编程技术网

“忘记斜杠”的后果;“git合并来源/分支机构”;

“忘记斜杠”的后果;“git合并来源/分支机构”;,git,Git,在更新工作副本时,我试图让自己养成显式获取和合并的习惯。但是,今天我在发出命令时输入了一个错误: $ git fetch origin $ git merge origin asdf 注意,我在merge命令中使用了空格而不是正斜杠。因为它似乎已经达到了预期的效果,所以我在推送之前没有注意到它在日志中添加了一个措辞奇怪的commit: commit 65f0037bed926c338cb95e7437e7f7f407028d9f Author: Me <my_email@example.

在更新工作副本时,我试图让自己养成显式获取和合并的习惯。但是,今天我在发出命令时输入了一个错误:

$ git fetch origin
$ git merge origin asdf
注意,我在merge命令中使用了空格而不是正斜杠。因为它似乎已经达到了预期的效果,所以我在推送之前没有注意到它在日志中添加了一个措辞奇怪的commit:

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

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

   git merge [-n] [--stat] [--no-commit] [--squash]
           [-s <strategy>] [-X <strategy-option>]
           [--[no-]rerere-autoupdate] [-m <msg>] [<commit>...]
…这是不可操作的:将分支与自身合并意味着无需执行任何操作。如果键入以下内容:

git merge origin
然后,
git
将查找与名为
origin
的远程设备关联的默认分支。在分支-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

没有解释远程跟踪分支,我可以肯定地说,在本例中,remotes/origin/HEAD实际上指向origin/asdf。我认为这意味着我最初的评估(意外地得到了期望的结果+笨拙的无操作)是准确的。类似于此吗?您能执行git cat文件提交65f0037b吗?您可能已经执行了八达通合并,或者其中一个提交可能只是快进的,您可能已经通过一条误导性的提交消息得到了您想要的。很难从提交描述中找到答案。@Charles Bailey:不幸的是,在我问了这个问题大约45分钟后,我决定在谨慎方面犯错误,硬重置+重做有问题的合并。我意识到这可能会使这个问题无法得到确切的回答,对此我深表歉意。然而,larsks给出的答案,再加上我知道默认分支实际上是“origin/asdf”这一事实,让我相信合并确实巧合地(笨拙地)实现了我最初的预期。除非你故意将修剪时间设置得非常短,并在过去的一个小时内进行gc'ed,提交65f0037b应仍然存在。。。这不再重要了。@Neverender:它告诉我它只有一个父级(我从日志中看不到),这意味着它不是真正的合并,只是一个带有误导性提交消息的常规提交。可能是提交中没有实际更改,或者更令人担忧的是,父信息丢失了。当你这样做的时候,也许你的本地克隆是最新的。
git merge origin/master
git merge origin/asdf