我有一个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
时(