如何从远程目录中获取git中最后一个合并的分支名称?已尝试git日志--第一个父级--合并-1 --联机但未获取分支名称请帮帮忙
luaexgnf1#
一般情况下,您不能。一个合并提交可能会有 merge分支foo 或 merge branch foo of someurl 形式的提交信息,但是要读取这些信息,你必须从远程获得提交。即使如此,也不能保证分支 foo 是否还存在,或者如果它确实存在,名称是否有意义。合并实际上是通过提交哈希ID而不是分支名称来工作的;分支名称可能消失。如果你认为这里需要分支名称,你可能做错了什么。分支名称在其他版本控制系统中是有意义的,但是在Git中,依赖它们是不明智的。
zour9fqk2#
下面是您需要给予的命令(将分支名称从origin/master更改为您正在检查合并的任何分支):
git log --merges origin/master --oneline --grep='^Merge' -1 | grep -oe "[^']*[^']" | sed -n 2p
2ledvvac3#
我花了很长时间来解决这个问题。我必须为我的CircleCi管道获取这些信息,为了解决这个问题,我使用了GitHub cli。具体来说,就是pr list命令:https://cli.github.com/manual/gh_pr_list以下命令提供了合并到主文件gh pr list -s merged -B main -L 1中的最后一个PR的所有信息然后你需要操作这个字符串,只得到分支名称,也就是“合并”之前的文本,我把它拆分成字符串,取倒数第二个元素。
pr list
gh pr list -s merged -B main -L 1
3条答案
按热度按时间luaexgnf1#
一般情况下,您不能。
一个合并提交可能会有 merge分支foo 或 merge branch foo of someurl 形式的提交信息,但是要读取这些信息,你必须从远程获得提交。即使如此,也不能保证分支 foo 是否还存在,或者如果它确实存在,名称是否有意义。合并实际上是通过提交哈希ID而不是分支名称来工作的;分支名称可能消失。
如果你认为这里需要分支名称,你可能做错了什么。分支名称在其他版本控制系统中是有意义的,但是在Git中,依赖它们是不明智的。
zour9fqk2#
下面是您需要给予的命令(将分支名称从origin/master更改为您正在检查合并的任何分支):
2ledvvac3#
我花了很长时间来解决这个问题。我必须为我的CircleCi管道获取这些信息,为了解决这个问题,我使用了GitHub cli。具体来说,就是
pr list
命令:https://cli.github.com/manual/gh_pr_list以下命令提供了合并到主文件
gh pr list -s merged -B main -L 1
中的最后一个PR的所有信息然后你需要操作这个字符串,只得到分支名称,也就是“合并”之前的文本,我把它拆分成字符串,取倒数第二个元素。