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



我有一个git/github问题。

我从一个master分支分叉,将其命名为fb,在本地更新了一些文件,git将fb推送到github上,并在github提交了一个pull请求(用于代码审查(。另一位同事也提交了另一份PR,供代码审查,获得了批准,并刚刚将他的分支合并(重新建立基础,并使用commits-crush(到马厩中(他的分支现在变成了新的马厩(我说错了,以前说master(。

和我的同事一样,我提交的PR也有几次提交,我是在github上完成的(而不是通过git在本地(。因为我分叉了,所以我在local上只有一个分支,这就是推送并提交的pull请求。将我分叉的fb分支合并到我同事的稳定分支的最佳方法是什么?

我应该遵循这个过程吗:从我的远程github fb repo中提取,将我的所有提交都放入本地fb,创建另一个名为stable的本地分支,从新的github master/stable中提取到本地stable分支,将fb重定为本地stable,解决冲突,然后推送原点——强制到远程master/stability?

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

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

(你可能会发现如何更新GitHub分叉存储库?很有用。还有如何避免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步:获取/a分支,其中包含要在master上重新进行PR的提交

如果您想更新现有的PR,请在fb分支机构上执行此操作。(你也可以在新的分支机构上进行。你的电话。但以下说明假设为fb(

获取要在fb上提交的所有提交,并将fb重新设置为最新的master。(你可以按另一种顺序做,取决于哪种更容易。我没有详细信息可以帮你决定(。

一旦一切看起来不错,就强行将fb推到原点。这将自动更新您的原始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时(

最新更新