在Git中,如何获得合并后的源分支名称?
我昨天开始合并,但出现了冲突,我没有完成解决,然后windows更新重启了我的电脑,关闭了我的终端窗口。
请看第一行的 .git/MERGE_MSG
.
根据评论,我们有以下情况。
git merge string
.string
回。Git只在一个地方保存了字符串,那就是在 MERGE_MSG
文件在 Git 目录下。 如果你有一个典型的设置,并且是在你的工作树的顶层,那就是。
$ cat .git/MERGE_MSG
Merge branch 'A' into B
# Conflicts:
# new-filename
第一行会读作:
Merge branch 'string'
or:
Merge branch 'string' into <name>
其中 name
是合并开始时您所在分支的名称。 (在合并开始时,您所在的分支名称是 into <name>
如果且仅在以下情况下,则省略该部分 <name>
是字面意思 master
. 这是Git中为数不多的几处以 master
得到了特殊的处理:它略微改变了默认的合并信息)。)
如果您的 Git 目录(仓库本身)在其他地方,使用 git rev-parse --git-dir
来找到它。
原始提交的哈希ID更容易得到。
$ git rev-parse MERGE_HEAD
243e415273b34b1553ce5eaeb6a189595d322015
你可以把它变成一组直接指向这个提交的分支名,用 git branch --points-at
:
$ git branch --points-at MERGE_HEAD
但这 可 不会产生任何名字--例如,如果你运行了 git merge
上的原始哈希ID,或者分支名称从那时起就被移动了--或者它可能产生多个名称。 所以第一行的 .git/MERGE_MSG
可能是查看的地方。
顺便说一下,您可以从以下地址查看提交的内容 MERGE_HEAD
与 git log
像往常一样。
$ git log MERGE_HEAD
这有时是一个有用的方法 看到 根据每个分支的 "腿 "上有多少个提交,来决定你要合并的内容。
$ git log --decorate --oneline --graph --boundary MERGE_HEAD...HEAD
在我一直使用的版本库中,这将产生:
* 243e415 (A) modify renamed file too
* 57b6097 rename in branch A
| * c8d5dd8 (HEAD -> B) remove orig-filename
|/
o 3a5c9ae (master) add orig-filename
在这种情况下,可视化可能是足够的, 但在更复杂的图形中,增加了以下内容 --left-right
可能会有帮助。
$ git log --decorate --oneline --graph --left-right --boundary MERGE_HEAD...HEAD
< 243e415 (A) modify renamed file too
< 57b6097 rename in branch A
| > c8d5dd8 (HEAD -> B) remove orig-filename
|/
o 3a5c9ae (master) add orig-filename
请注意 "我们 "的分支如何。HEAD
又名 B
在三个点的右边有一个点。MERGE_HEAD...HEAD
有些提交被标记为 >
因为他们是我们的分支。 "他们 "的分支。MERGE_HEAD
又名 A
标注为:"我","我","我","我","我","我","我","我","我","我","我","我","我","我","我","我","我","我","我","我","我","我","我","我","我","我","我","我","我","我","我","我","我","我","我","我","我","我","我"。<
因为 MERGE_HEAD
是在左边的 MERGE_HEAD...HEAD
.
(The --boundary
选项调整了包含在 "提交 "中的提交集。git log
输出,这样我们就可以看到这里的最后一次提交,在本例中,在 master
. 否则,这个提交将被排除在 git log
产量)。)