变基后手动合并的拉取请求未显示为 Github 上的合并

Pull requests merged manually after a rebase don't show as merged on Github

为了保持线性历史,我使用以下方法来合并更改,而不是依赖于 github 的合并功能:

git checkout -b feature_x user/feature_x
git rebase master                           
git checkout master
git merge --no-ff feature_x
git push origin master                       # On Github: PR gets merged and closed
git branch -D feature_x

上面的工作非常好,但在我必须手动解决冲突的情况下,PR 不会自动显示为 Github 合并,我必须手动关闭 PR。

是否有更好的方法来合并自动显示 Github PR 已合并和关闭的拉取请求?

由于该功能已变基,其提交历史已完全抵消。那时它基本上是一个新分支。

您可以强制推送变基功能分支,覆盖拉取请求(假设您是维护者并且您具有对分叉的写入权限)。

$ git push -f [feature] [remote] [feature]

一旦GitHub获得新的主人,拉取请求将被关闭。

正如 onlythefinestwilldo 正确指出的那样,一旦分支变基,它包含一组不同的提交,这意味着原始拉取请求不会受到影响。

为了克服这个问题,我们改变了流程:现在,我们在将更改合并到 master 时不对分支进行 rebase。如果无法合并更改,则要求拉取请求的创建者重新设置其分支并更新拉取请求。虽然不方便,但这是确保拉取请求在合并时自动关闭的唯一方法。