列出可以安全删除的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
,并使脚本不显示您所在的分支),但它做了我想要的,所以我将其标记为答案。