如何列出已推送到远程的分支?

时间:2014-09-04 21:55:52

标签: git git-branch git-remote

我可以找到列表跟踪分支(here)的很多答案,我想要检查哪些本地分支可以安全删除,因为提交已经被推送到远程。

在大多数情况下,我将这些分支机构推到遥控器上,并且它们不会跟踪#34;因此该部分并没有真正起作用。但是在大多数情况下,远程分支具有相同的名称,并且应指向相同的提交(但并非总是如此)。

这样看起来应该是相当常见的事情吗?

1 个答案:

答案 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