确定 repo 当前正在合并哪个提交 (MERGE_HEAD)

Determine which commit the repo is currently merging (MERGE_HEAD)

假设我的内存保留非常糟糕,并且有一个处于尚未解决的合并冲突中间的存储库。

一个git status会显示你有unmerged paths的事实,但它不会显示这个合并冲突的MERGE_HEAD commit/sha。

是否有一个内置的 git cmd 选项,无需手动测试 .git 是否为文件或目录并按照子模块目录到 cat MERGE_HEAD 文件到 git log

据我所知,可以在三个地方找到此信息。

首先,冲突标记会告诉你。

diff --cc one
index 1f7391f,a7453f0..0000000
--- a/one
+++ b/one
@@@ -1,1 -1,1 +1,5 @@@
++<<<<<<< HEAD
 +master
++=======
+ feature
++>>>>>>> feature

这告诉我我正在将 feature 合并到 HEADgit status 会告诉我 HEAD 是什么分支。

如果你 cat .git/MERGE_MSG 它会告诉你你正在合并哪个分支。

$ cat .git/MERGE_MSG 
Merge branch 'feature'

# Conflicts:
#   one

最后,cat .git/MERGE_HEAD 会告诉您要合并的 SHA。这可以变成带有 git branch --contains.

的分支名称
cat .git/MERGE_HEAD | xargs git branch --contains