Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
列出可以安全删除的git分支_Git - Fatal编程技术网

列出可以安全删除的git分支

列出可以安全删除的git分支,git,Git,如果执行git branch-d branchname,则如果它引用了历史记录中较早的提交,它将删除分支名称,或者告诉您需要使用-d。我经常创建分支,这些分支后来被推送到master,因此可以根据这个标准删除。有没有一种简单的方法可以列出指向master的早期提交的所有分支,即git不介意只使用-d选项删除的分支?如果它同时适用于所有分支,而不仅仅适用于master,则可获得额外积分 我有82家本地分支机构,我知道,即使不是大多数分支机构,也有相当多的分支机构现在可以安全地删除,但我不想花时间逐

如果执行
git branch-d branchname
,则如果它引用了历史记录中较早的提交,它将删除分支名称,或者告诉您需要使用
-d
。我经常创建分支,这些分支后来被推送到master,因此可以根据这个标准删除。有没有一种简单的方法可以列出指向master的早期提交的所有分支,即git不介意只使用
-d
选项删除的分支?如果它同时适用于所有分支,而不仅仅适用于master,则可获得额外积分

我有82家本地分支机构,我知道,即使不是大多数分支机构,也有相当多的分支机构现在可以安全地删除,但我不想花时间逐一检查

试试看:

$ git checkout master # or whatever branch you might compare against ...
$ git branch --no-merged
$ git branch --merged
发件人:

使用--merged,将只列出合并到命名提交中的分支(即,其tip提交可从命名提交中访问的分支)。With--no merged仅列出未合并到命名提交中的分支。如果缺少参数,则默认为HEAD(即当前分支的尖端)

编辑:

要为每个分支显示此信息,可以执行以下操作:

回购示例:

o <--- experimental
|
o
|
o <--- next
|
o
|
o <--- master
|
o----o <--- broken
|
o
|


$ for branch in `git branch --no-color --verbose | \
sed -e 's/*//' | awk '{print $1}'`; \
do echo "[$branch]"; git checkout -q $branch; git branch --merged; done

[broken]
* broken
[master]
* master
[next]
master
* next
[experimental]
master
next
* experimental
o是一个鲜为人知但非常有用的工具,它可以直观地显示每个分支所特有的提交。一开始可能很难破译,但一旦你理解了输出,它就非常有用了。有一个简短但很好的例子

说明

   Shows the commit ancestry graph starting from the commits named
   with <rev>s or <globs>s (or all refs under refs/heads and/or
   refs/tags) semi-visually.

   It cannot show more than 29 branches and commits at a time.
显示从名为
带有s或s(或参照/标题下的所有参照)和/或
参考/标记)半可视化。
它一次不能显示超过29个分支和提交。

我假设您有br作为分支的快捷方式:)。这很有效。现在,如何为每个分支执行此操作,以便我可以获得一个可以删除的分支的良好列表。另外,这显示了我不想要的远程分支。太好了。我想这需要一些shell脚本。我不知道sed或awk,所以我很高兴你写了它。我想我将修改您的脚本,使其不在每个分支下显示分支本身,并为每个分支的头部提供提交消息的第一行,以便更容易地查看每个分支所指向的内容。也可能是每次提交的日期。这可以改进(使用
branch
而不是
br
checkout
而不是
co
,并使脚本不显示您所在的分支),但它做了我想要的,所以我将其标记为答案。