我的家庭计算机位于公司VPN防火墙后面,无法从外部访问。
我试图让我的github repo尽可能与我桌面版的回购保持一致。
我有以下钩子:
.git/hooks/post-commit
:git push origin *:*
现在我意识到,如果我签出一个分支,提交并将该分支合并到master中,我将拥有一个“悬空”远程分支,因为提交会创建该分支。
我尝试使用Google搜索“post-delete-branch”挂钩来调用git push origin :$(branch)
,但是git没有提供此挂钩。
我该怎么做才能删除悬空分支?
答案 0 :(得分:0)
您可以在当前的post-commit钩子中添加一个脚本来清理本地分支并推送这些删除(如此blog post中所示):
git branch —merged master | grep -v ‘master$’ | xargs git branch -d
echo “The following remote branches are fully merged into master and will be removed:” git branch -r —merged master | sed ’s/ *origin\///‘ | grep -v ‘master$’
read -p “Continue (y/n)? ”
if [ “$REPLY” == “y” ] then
# Remove remote fully merged branches
git branch -r —merged master | sed ’s/ *origin\///‘ | grep -v ‘master$’ | xargs -I% git push origin :%
echo “Done!” say “Obsolete branches are removed”
fi
这样,在下次提交时,任何先前合并的分支都将在本地和远端被删除 请参阅" How to delete a Git branch both locally and remotely?"。
不要忘记在家做一个:
git fetch --prune
这将清理远程不再存在的本地分支
请参阅" git remote branch deleted but still appears in 'branch -a
'"