Github - 在合并为拉取请求的一部分后清理分支

Github - Cleaning up branches after they're merged as part of a pull request

我正在努力改进围绕合并和整合更改的团队流程,并希望在 GitHub 中使用 Pull Requests 作为更好地管理更改的方法。

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

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

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

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

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

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

如果这成为团队中的普遍做法,您就会达到目标。

一种自动化的方法是使用 post-merge 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