通过本地 git 合并到稳定分支的最佳方式

Best way to merge into a stable branch via a local git

我有 1 个 git/github 问题。

我从一个 master 分支上分叉,将其命名为 fb,在本地更新了一些文件,git 将 fb 推送到 github,并在 github 上提交了一个 pull request (用于代码审查)。另一位同事也提交了另一个 PR,用于代码审查,获得批准,然后将他的分支合并(重新定位,提交挤压)到稳定版中(他现在成为新的稳定版(我说错了,之前说的是 master)。

与我的同事一样,我提交的 PR 也有几个我在 github 上(不是通过 git 在本地)所做的提交。因为我分叉了,所以我在本地只有 1 个分支,这是被推送并提交给拉取请求的分支。将我分叉的 fb 分支合并到我同事的稳定分支中的最佳方法是什么?

我应该遵循这个过程:从我的远程 github fb repo 拉取以将我的所有提交放入本地 fb,创建另一个名为 stable 的本地分支,从新 github master/stable 到本地稳定分支,将我的 fb 重新设置为本地稳定分支,解决冲突,然后将 origin --force 推送到远程 master/stable?

第 1 步:将本地 master 同步到 upstream/master

您可能应该先将本地 master 同步到上游。如果您在本地 master 上有不在 upstream/master 中的提交,那么 "save" 通过在同一个提交上创建新的分支引用来提交它们。完成后(如果需要),将本地主机硬重置为最新 upstream/master

(您可能会发现 How do I update a GitHub forked repository? useful. Also How to avoid merge-commit hell on GitHub/BitBucket

我觉得你已经知道怎么做了,但以防万一:

git checkout master
git checkout -b SAVE    // only do this if you need to 
                        // save unmerged work on local master
git fetch upstream master
git reset --hard upstream/master

步骤 2:获取 the/a 分支,其中包含您要 PR 重新基于 master

的提交

如果您想更新现有的 PR,请在您的 fb 分支上执行此操作。 (您也可以在新分支上执行此操作。您来电。但以下说明假定 fb

获取您要在 fb 上提交的所有提交并将 fb 变基到现在最新的 master。 (您可以按其他顺序执行,具体取决于哪个更容易。我没有详细信息可以为您决定)。

一旦一切正常,强制将 fb 推送到原点。这将使用新的 rebased 提交自动更新您的原始 PR。

例如 下面假定您在 GitHub 上所做的更改是在 fb 分支上进行的。如果不是,请根据需要调整命令和顺序。

git checkout fb
git pull origin/fb    //to grab the commits you made directly on GitHub
git rebase --onto master <the commits on fb you want to rebase>
git push -f origin fb  

上面的最后一个命令将覆盖 origin/fb,因此请确保您已经从它那里得到了您想要的一切(例如,当您之前将它拉入本地 fb