有什么办法可以得到输出git branch -v
作为管道命令?确切地说,我只对分支的状态感兴趣,即它是否是[gone]
or not.
例如给出以下内容git branch -v
output:
> git branch -v
master 32c59ad4 Some other comment
someDeletedBranch 6aacba47 [gone] Some Comment
我怎样才能得到someDeletedBranch
ref?
请注意,这是not与git branch --merged
,例如,如果您将拉取请求压缩到您的主控中,那么这个解决方案 https://stackoverflow.com/questions/15116908/git-branch-merged-using-plumbing-commands不会的。
这主要与这个问题 https://stackoverflow.com/questions/7726949/remove-tracking-branches-no-longer-on-remote/,因为这将是缺少的部分,无法创建可靠的脚本来删除远程上不再存在的本地分支。
水管替代品git branch
通常是git for-each-ref
.
$ git fetch --prune
$ git for-each-ref --format '%(refname) %(upstream)' refs/heads refs/remotes/origin
此输出将包括每个本地分支的条目,以及指向回原点的每个远程跟踪引用的条目;所以如果紧接着运行fetch --prune
如图所示,它可以显示本地存在但服务器上不存在的内容。
当然有一个问题:“存在于本地但不在服务器上”might意味着“从服务器中删除”,或者可能意味着“本地创建但尚未推送”。为了区分差异,您还需要知道您的本地分支机构是否“认为”它有上游。 (如果确实如此,则可以相当安全地假设它已从服务器中删除,因为git
拒绝设置不存在的上游;因此,如果它是错误的,那么基本上就必须有人故意用损坏的配置来“欺骗”你的脚本。)
所以这就是--format
选项是为了.您可以处理此输出,寻找
refs/heads/somebranch refs/remotes/origin/somebranch
并且,对于每个这样的条目,如果没有also一个单独的条目,例如
refs/remotes/origin/somebranch
那么这是一个将被标记的分支[gone]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)