有没有办法获得与原生 git 命令相同的信息
git branch --merged <sha>
通过 Ruby 的Rugged libgit2 绑定?
git commit 所做的是查看每个分支并检查分支与您给出的提交(或 HEAD,如果没有)之间的合并基础是否对应于分支之一。
如果它们匹配,则合并;如果他们不这样做,那就不是。你可以很容易地在 ruby 中完成这个循环
repo.branches.each(:local) # look only at local branches
.map { |b|
tgt = b.resolve.target # look at what the branch is pointing to
# and check if the target commit is included in the history of HEAD
merged = repo.merge_base(repo.head.target, tgt) == tgt.oid
[b.name, merged]
} # this will give a list with the name and whether the branch is merged
.keep_if { |name, merged| merged } # keep only the ones which are merged
.map(&:first) # get the name
您可以merged_list << b.name if merged
在第一个块中放置一个并将其挂起each
,但我喜欢编写数据流。
您还可以根据需要更改是否对分支使用或两者都:local
使用。:remote
您还可以更改repo.head.target
为您想要比较的任何 id。