目录

Git清理本地残留的但已经在服务器上被删除的分支

Git清理本地残留的、但已经在服务器上被删除的分支

要筛选出已经被服务器删除的本地分支,并在本地删除这些分支,可以按照以下步骤进行操作:

步骤 1: 获取远程分支信息,确保本地的远程分支信息是最新的:

git fetch -p

步骤 2: 列出本地分支和远程分支:

git branch -vv

步骤 3: 筛选出已经被服务器删除的本地分支:

git branch -vv | grep ': gone]' | awk '{print $1}'

步骤 4: 删除已经被服务器删除的本地分支:

git branch -vv | grep ': gone]' | awk '{print $1}' | xargs -r git branch -D

详细解释

git fetch -p :从远程仓库获取最新的分支信息,并删除本地已经不存在的远程分支。

git branch -vv :列出所有本地分支,并显示每个分支对应的远程分支和最新的提交信息。

grep ': gone]' :筛选出那些远程分支已经被删除的本地分支。‘: gone]’ 是 git branch -vv 输出中表示远程分支已删除的标记。

awk '{print $1}' :提取分支名称。

xargs -r git branch -D :使用 xargs 将筛选出的分支名称传递给 git branch -D 命令,批量删除这些本地分支。

示例

假设执行 git branch -vv 的输出如下:

  feature1 1234567 [origin/feature1: gone] Some commit message
  feature2 89abcdef [origin/feature2] Another commit message
  feature3 fedcba98 [origin/feature3: gone] Yet another commit message

然后执行删除命令:

git branch -vv | grep ': gone]' | awk '{print $1}' | xargs -r git branch -D

将会删除本地的 feature1feature3 分支,因为它们对应的远程分支已经被删除。