1

我有一个正在进行的合并,但我没有完成 - 回购仍处于“合并”状态,MERGE_HEAD 文件存在。我现在不再知道我正在尝试合并哪些修订 - 好吧,通过git log我知道我所在的修订和分支的名称,所以我知道那个父 - 但它是我的另一个(未来)父米失踪。

当然,我的控制台中的命令历史记录不够长,无法包含git merge我使用的命令——它早就被遗忘了。

git status只告诉我:“所有冲突都已解决,但您仍在合并。”。

4

3 回答 3

1

您可以使用

git log --merge -p

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

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

于 2019-07-02T10:36:19.917 回答
1

MERGE_HEAD 文件实际上包含了答案。事实上,它只包含那个。

如果存在任何 git 命令来从控制台显示其内容,我很高兴知道并会分发积分。

于 2019-07-02T11:30:50.513 回答
-1

摆脱“所有冲突已修复但您仍在合并”的状态。有 git merge --continue

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

要查看在合并之前你的 repo 发生了什么,使用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 操作中时,我就可以返回到任何中间步骤

于 2019-07-02T10:28:42.173 回答