gpt4 book ai didi

Git:如何列出从特定分支创建的所有分支?

转载 作者:太空狗 更新时间:2023-10-29 14:27:43 25 4
gpt4 key购买 nike

我需要生成一个报告,其中包含从 develop 创建的所有分支名称分支(过去某个时候从master分支出来)。我的方法是在 develop 中获得第一次和最后一次提交。使用 git log --pretty=format:"%h" master..develop ,然后使用 git branch --contains <hash> 的提交范围.

但是,上述方法存在一些问题:

  1. 我需要运行命令以了解在我的查询中要考虑的提交范围。
  2. 我必须重复 git branch --contains命令范围内的每个散列。
  3. git branch --contains 的输出大多数情况下,命令将包含冗余结果,因为大多数提交在分支之间是通用的。

我希望有更好、更直接的方法来做到这一点。下面我将尝试说明感兴趣的案例:

  master
^
| develop
a---b ^
\ |
--c--d---e---f---g--h--i
\ \ \ \
k-l m n o--p
^ ^ ^ ^
| | | |
branch_1 | branch_3 |
branch_2 branch_4

// Desired output:
branch_1
branch_2
branch_3
branch_4

最佳答案

你可以用一个命令非常接近:

git log --ancestry-path  --branches --not $(git merge-base --all master develop) \
--pretty=%D --simplify-by-decoration --decorate-refs=refs/heads

那是“仅向我显示所有分支提示历史中可追溯到 master 和 develop 的当前 merge 基础的分支装饰”。

您可以通过管道将结果传递给诸如 awk '{print $NF}' RS=', |\n' 之类的东西,从而使它更漂亮。

请注意,这(如@torek 的回答)假定您在像您的生产主机一样在为归档级稳定性而管理的 repo 中执行此操作,分支名称和提交之间根本没有必然关系,更不用说永久性或全局或独特的。如果您试图将提交永久绑定(bind)到某些外部管理记录,请在提交消息中执行此操作,而不是分支名称。

编辑:如果您想快速了解主开发拆分后的当前分支结构,

git log --graph --decorate-refs=refs/heads --oneline \
--branches --simplify-by-decoration \
--ancestry-path --boundary --not `git merge-base master develop`

关于Git:如何列出从特定分支创建的所有分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56370057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com