gpt4 book ai didi

通过管道命令的 Git 分支状态

转载 作者:太空狗 更新时间:2023-10-29 13:34:41 26 4
gpt4 key购买 nike

有什么方法可以将 git branch -v 的输出作为管道命令获取吗?确切地说,我只对分支的状态感兴趣,即它是否是 [gone]

例如给定以下 git branch -v 输出:

> git branch -v 
master 32c59ad4 Some other comment
someDeletedBranch 6aacba47 [gone] Some Comment

我怎样才能得到 someDeletedBranch ref?

请注意,这与 git branch --merged 相同,例如,如果您正在将 pull 请求压缩到您的 master 中,那么 this solution不会的。

这主要与 this question 有关,因为这将是能够创建可靠脚本以删除远程不再存在的本地分支的缺失部分。

最佳答案

git branch 的管道替代品通常是 git for-each-ref

$ git fetch --prune
$ git for-each-ref --format '%(refname) %(upstream)' refs/heads refs/remotes/origin

此输出将包括每个本地分支的条目,以及每个指向回原点的远程跟踪引用的条目;因此,如果在 fetch --prune 之后立即运行,如此处所示,它可以向您显示本地存在但服务器上不存在的内容。

当然有一个陷阱:“存在于本地但不在服务器上”可能意味着“从服务器上删除”,或者可能意味着“在本地创建但尚未推送”。为了区分,您还需要知道您的本地分支机构是否“认为”它有上游。 (如果是这样,假设它已从服务器中删除是相当安全的,因为 git 拒绝设置不存在的上游;所以如果它是错误的,基本上有人必须故意“欺骗”你的配置损坏的脚本。)

这就是 --format 选项的用途。您可以处理此输出,寻找

refs/heads/somebranch refs/remotes/origin/somebranch

并且,对于每个这样的条目,如果没有还有一个单独的条目,例如

refs/remotes/origin/somebranch

那么这是一个标记为[gone]

的分支

关于通过管道命令的 Git 分支状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53503591/

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