📌  相关文章
📜  删除不在远程的本地分支 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:22:42.689000             🧑  作者: Mango

删除不在远程的本地分支 - Shell/Bash

当我们在本地创建了多个分支,并且在远程仓库中只有一部分分支被保留,这样我们就需要将本地分支中不在远程的分支给删除掉。这是一个常见的需求,特别是在多人协同开发的时候,我们会创建多个临时分支来尝试进行实验,但不是所有的分支都需要被保留。

下面是一段Shell/Bash脚本,可以自动化删除本地分支中不存在于远程的分支。该脚本可以帮助我们减少手动删除本地分支的时间。

#!/bin/bash

git remote prune origin

for branch in $(git branch --format "%(refname:lstrip=2)") 
do
    if ! git branch -r | grep -q "${branch}"; then
        git branch -D "${branch}" 
        echo "${branch} 已被删除"
    fi
done
脚本说明

上述Shell/Bash脚本会执行以下操作:

  1. 执行 git remote prune origin 命令清理本地仓库中不在远程仓库中的分支。
  2. 使用 git branch --format 命令获取所有的本地分支列表(排除'master'分支)。
  3. 遍历本地分支列表,并且使用 git branch -r 命令将本地分支转换为远程分支
  4. 判断是否在远程分支中存在,存在则跳过,否则执行 git branch -D 命令删除该本地分支。
使用方法

将该脚本放置在git仓库根目录下,然后尝试执行以下命令:

./remove_local_branches_not_in_remote.sh

执行命令后,该脚本会自动删除所有不存在于远程的本地分支。

注意事项
  • 该脚本不能删除本地分支中修改尚未提交的内容,确保你在执行前已经将修改提交到远程仓库。
  • 该脚本将删除所有不存在于远程的分支,确保你已经知道哪些分支不需要保留。