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
将会删除本地的 feature1
和 feature3
分支,因为它们对应的远程分支已经被删除。