Git:列出正在进行合并的分支



我的团队在LabVIEW中编程,它将所有源代码存储在二进制文件中。这意味着当99%的时间"合并"时,您从合并库或分支中选择文件。

我想做一个视觉工具来帮助你(在这种情况下,源树有点小)。它基本上只是一个UI,将运行以下命令:

git checkout --ours ...
git checkout --theirs ....

我的问题是:有什么方法可以获得与"我们的"one_answers"他们的"相对应的用户友好的分支名称吗?

ours分支只是您开始合并时所在的分支,也就是说,无论HEAD的名称如何。(这假设HEAD命名了一个分支,即当您开始合并时,您不在特殊的匿名"分离的HEAD"分支上。)

获取当前分支的符号名称:

git symbolic-ref HEAD

这会将全名(refs/heads/master)打印到标准输出并以成功(零)状态退出,或者将fatal: ...消息打印到stderr并以失败(非零)状态离开。添加-q以抑制失败消息;添加--short以在成功时从输出中抑制refs/heads/部分。

被合并的其他分支的名称(如果有的话)有点困难。Git很早就将参数转换为原始SHA-1哈希ID。然而,它将名称(如果有的话)存储在.git/MERGE_MSG:中

$ cat .git/MERGE_MSG
Merge branch 'BranchB' into BranchA
$ 

通过读取和解析该文件(注意:您可以用git rev-parse --git-dir找到.git目录,然后添加/MERGE_MSG,以获得文件的路径),您可以找到分支名称(如果有的话)。请注意,该文件的格式(以及它的存在)在任何地方都没有正式记录,因此要做好更改的准备;但它从相对早期就出现了,很长一段时间都没有变化。

最新更新