git post删除钩子?

时间:2014-07-21 07:06:44

标签: git github version-control

我的家庭计算机位于公司VPN防火墙后面,无法从外部访问。

我试图让我的github repo尽可能与我桌面版的回购保持一致。

我有以下钩子:

.git/hooks/post-commitgit push origin *:*

现在我意识到,如果我签出一个分支,提交并将该分支合并到master中,我将拥有一个“悬空”远程分支,因为提交会创建该分支。

我尝试使用Google搜索“post-delete-branch”挂钩来调用git push origin :$(branch),但是git没有提供此挂钩。

我该怎么做才能删除悬空分支?

1 个答案:

答案 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'"