Git:查找(未来)parent 正在进行的合并

Git : Find (future) parent of ongoing merge

我有一个正在进行的合并,但我没有完成 - 存储库仍处于 "MERGING" 状态,MERGE_HEAD 文件存在。我现在不知道我正在尝试合并哪些修订版 - 好吧,通过 git log 我知道我所在的修订版和分支的名称,所以我知道 parent - 但是这是另一个(未来)parent 我失踪了。

当然,我的控制台中的命令历史记录还不足以包含我使用的 git merge 命令 - 它早已被遗忘。

git status 只告诉我:"All conflicts fixed but you are still merging.".

摆脱状态"All conflicts fixed but you are still merging."有git merge --continue

要中止当前的合并(以及 return 到您所谓的(未来)父级),您可以使用 git merge --abort。这总是一个不错的选择,因为您可以重新开始

要查看合并前您的存储库发生了什么,请使用 git reflog 每一行都是 git 为您执行的一个步骤:

Haass@LAPTOP-ETDGT1PT MINGW64 /c/devel/inventory (master)
$ git reflog
398e725 (HEAD -> master, upstream/master) HEAD@{0}: reset: moving to upstream/master
8700bfd (origin/master, origin/HEAD) HEAD@{1}: checkout: moving from 398e72552f3300d0389426b17feae6543305156f to master
398e725 (HEAD -> master, upstream/master) HEAD@{2}: checkout: moving from master to upstream/master
8700bfd (origin/master, origin/HEAD) HEAD@{3}: rebase finished: returning to refs/heads/master
8700bfd (origin/master, origin/HEAD) HEAD@{4}: rebase: checkout refs/remotes/origin/master
be73d62 HEAD@{5}: reset: moving to HEAD

看起来像这样。在合并之前总是有一个结帐,所以从上到下找到第一个结帐。第一列是可用于结帐的 git 散列。

在这种情况下,我喜欢 git tag 我的步骤,这样当我在某些 git 操作中迷路时,我可以 return 到任何中间步骤

您可以使用

git log --merge -p

显示所有正在合并的分支中不常见的提交差异 (source)。您可以看到分支指向的最后一次提交的提交 SHA。

编辑:您还可以打印要合并的提交标识符 cat .git/MERGE_HEAD

MERGE_HEAD 文件包含明明白白的答案。事实上,它只包含那个。

如果有任何 git 命令可以从控制台显示其内容,我很乐意知道并会分发积分。