【发布时间】:2012-05-22 06:00:36
【问题描述】:
根据this article,我试图让自己养成在更新工作副本时显式获取和合并的习惯。但是,今天我在发出命令时打错了:
$ git fetch origin
$ git merge origin asdf
请注意,我在合并命令中使用了空格而不是正斜杠。因为无论如何它似乎已经达到了预期的效果,直到我已经推送它才注意到它在日志中添加了一个措辞奇怪的提交:
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
【问题讨论】:
-
你能做到
git cat-file commit 65f0037b吗?您可能已经执行了章鱼合并,或者其中一个提交可能只是快进了,并且您可能通过误导性的提交消息得到了想要的结果。从提交描述中很难判断。 -
@Charles Bailey:不幸的是,在我提出这个问题大约 45 分钟后,我决定谨慎行事,硬重置 + 重做有问题的合并。我意识到这可能会使这个问题无法明确回答,对此我深表歉意。然而,larsks 给出的答案,再加上我知道默认分支实际上是“origin/asdf”这一事实,让我相信合并确实巧合地(而且尴尬地)完成了我最初的打算。
-
除非您故意将修剪时间设置为非常短并且在过去一小时内进行了 gc'ed,否则提交 65f0037b 应该仍然存在......这不再重要了。
-
@Neverender:它告诉我它只有一个父级(我无法从日志中看到),这意味着它不是真正的合并,只是具有误导性的常规提交提交消息。可能是提交中没有实际更改,或者更令人担忧的是,父信息丢失了。当您执行此操作时,您的本地克隆可能是最新的。
标签: git