如果您执行git branch -d branchname
,则会删除分支名称(如果它引用了历史记录中的早期提交),或者告诉您需要使用-D
。我经常创建稍后被推送到master的分支,因此可以通过此标准删除。有没有一种简单的方法可以列出所有指向master的早期提交的分支,也就是git不介意只用-d
选项删除的分支?奖励积分如果它适用于所有分支,而不仅仅是主。
我有82个本地分支机构,我知道如果不是大多数分支机构现在可以安全删除,但我不想花时间通过每个分支机构来尝试这样做。
答案 0 :(得分:32)
尝试:
$ git checkout master # or whatever branch you might compare against ...
$ git branch --no-merged
$ git branch --merged
使用--merged,将仅列出合并到命名提交中的分支(即,可以从命名提交到达提示提交的分支)。使用--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
答案 1 :(得分:4)
git show-branch
是一个鲜为人知但非常有用的工具,可以直观地显示每个分支所特有的提交。一开始可能很难破译,但一旦理解了输出就很有用了。有一个简短但很好的introduction可用。
<强>描述强>
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.