首页 > 解决方案 > Github - 在合并后清理分支作为拉取请求的一部分

问题描述

我正在努力改进围绕合并和整合更改的团队流程,并希望使用 GitHub 中的拉取请求来更好地管理更改。

我对此的一个担忧是,我想确保在合并拉取请求后,删除已合并的分支(我希望提交保留,但我不希望我们的存储库充满很多不再需要的陈旧分支)。

完成此任务的最佳/最安全方法是什么(最好使用最少的步骤,因为步骤越多,被遗忘的可能性就越大)。

标签: gitgithubbranching-and-merging

解决方案


通常,当我在成功的代码审查后将我的功能分支合并到 master 时,我会运行:

git branch -d <branch-name>
git push origin :<branch-name>

注意:推送时不要忘记:分支名称前面的。

第一个命令在本地删除您的分支,第二个命令删除远程分支。

如果这成为团队中的常见做法,您将达到目标。

一种使其自动化的方法是使用合并后的 git hook,在其中检查当前分支是否为主分支,从提交消息中获取分支名称,然后运行我在上面编写的两个命令。

在您的项目文件夹中创建一个文件

touch .git/hooks/post-merge

并为其添加执行权限

chmod +x .git/hooks/post-merge

然后用文本编辑器打开它并添加以下内容:

#!/bin/sh

#---------------------------------
# Delete branch merged into master
#---------------------------------

# Define your master branch name
master="master"

currentBranch=$(git branch | grep \* | cut -d ' ' -f2)

if [ $currentBranch = $master ]; then
    branchToDelete=$(git rev-parse --abbrev-ref $(git show-ref | grep $(git rev-parse HEAD^2)| cut -d ' ' -f 2))
    if [ $branchToDelete != "" ]; then
        git branch -d $branchToDelete
        git push origin :$branchToDelete
    fi 
fi
exit 0

推荐阅读