切到主干分支develop,更新远程分支
November 7, 2014 · View on GitHub
#!/bin/bash
echo ''; echo ''; echo -e '\t分支清理'; echo '*'; echo ''; echo '';
切到主干分支develop,更新远程分支
git checkout develop && git remote update --prune;
清理本地分支
read -p clean_local =~ ^[Yy]$ ]]; then # 清理本地已merge的分支 git branch --merged | grep -v "master\|develop" | xargs -n 1 git branch --delete; echo "本地清理完毕。。。。"; echo ''; fi
清理远程已经合并分支
read -p clean_remote_merged =~ ^[Yy]$ ]]; then
# 获取远程已经merge的分支
remote_merged_branches=git branch -r --merged | grep -v "master\\|develop";
echo -e '\t\t-------已合并分支------'
for branch_info in $remote_merged_branches; do
echo $branch_info;
echo -e `git log -1 $branch_info --pretty=format:'%C(yellow)%h%Creset -%C(yellow)%d%Creset %Cgreen(%cr)%Creset %C(red)%ci %C(bold blue)<%an>%Creset %C(white)%s' --abbrev-commit --date=short`;
read -p $"[已合并分支] -是否删除该远程分支 $branch_info ?[y/n]" remove_merged
if [[ $remove_merged =~ ^[Yy]$ ]]; then
read -p $"删除前是否查看分支 $branch_info 提交历史?[y/n]" check_log;
if [[ $check_log =~ ^[Yy]$ ]]; then
git log $branch_info --graph --pretty=format:'%C(yellow)%h%Creset \
-%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' \
--abbrev-commit --date=short
fi
read -p $"确认删除分支 $branch_info? [y/n]" confirmed;
if [[ $confirmed =~ ^[Yy]$ ]]; then
echo $branch_info | sed -e 's/origin\//:/' | xargs git push origin;
# echo $branch_info | sed -e 's/origin\//:/' | xargs echo;
fi
fi
echo '';
done
echo "远程已合并分支清理完毕。。。。";
echo '';
fi
清理远程未合并分支
read -p clean_remote_merged =~ ^[Yy]]]; then # 获取远程未merge的分支 remote_no_merged_branches=`git branch -r --no-merged | grep -v "master\\|develop"`; echo -e '\t\t-------未合并分支------' for branch_info inremote_no_merged_branches; do echo branch_info --pretty=format:'%C(yellow)%h%Creset -%C(yellow)%d%Creset %Cgreen(%cr)%Creset %C(red)%ci %C(bold blue)<%an>%Creset %C(white)%s' --abbrev-commit --date=short`;
read -p $"[未合并分支] -是否删除该远程分支 $branch_info ?[y/n]" remove_merged
if [[ $remove_merged =~ ^[Yy]$ ]]; then
read -p $"删除前是否查看分支 $branch_info 提交历史?[y/n]" check_log;
if [[ $check_log =~ ^[Yy]$ ]]; then
git log $branch_info --graph --pretty=format:'%C(yellow)%h%Creset \
-%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' \
--abbrev-commit --date=short
fi
read -p $"确认删除分支 $branch_info? [y/n]" confirmed;
if [[ $confirmed =~ ^[Yy]$ ]]; then
echo $branch_info | sed -e 's/origin\//:/' | xargs git push origin;
# echo $branch_info | sed -e 's/origin\//:/' | xargs echo;
fi
fi
echo '';
done
echo "远程未合并分支清理完毕。。。。";
echo '';
fi
echo "分支清理完毕!"