我可以找到列表跟踪分支(here)的很多答案,我想要检查哪些本地分支可以安全删除,因为提交已经被推送到远程。
在大多数情况下,我将这些分支机构推到遥控器上,并且它们不会跟踪#34;因此该部分并没有真正起作用。但是在大多数情况下,远程分支具有相同的名称,并且应指向相同的提交(但并非总是如此)。
这样看起来应该是相当常见的事情吗?
答案 0 :(得分:2)
我发现这样做的方式是:
git branch -a --contains name_of_local_branch | grep -c remotes/origin
当然,origin
可以更改为任何遥控器的名称。
这将输出包含本地分支的远程分支的数量。如果该数字不是0,那么我很乐意从我的本地存储库中清除它。
更新,将其制作成剧本:
#!/bin/bash
# Find (/delete) local branches with content that's already pushed
# Takes one optional argument with the name of the remote (origin by default)
# Prevent shell expansion to not list the current files when we hit the '*' on the current branch
set -f
if [ $# -eq 1 ]
then
remote="$1"
else
remote="origin"
fi
for b in `git branch`; do
# Skip that "*"
if [[ "$b" == "*" ]]
then
continue
fi
# Check if the current branch tip is also somewhere on the remote
if [ `git branch -a --contains $b | grep -c remotes/$remote` != "0" ]
then
echo "$b is safe to delete"
# git branch -D $b
fi
done
set +f