通过本地 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
)
我有 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
)