Git合并上游brnches之间的变化

时间:2015-05-29 19:53:00

标签: git github merge

我有点不确定如何更改上游分支。我有一个分支A的本地副本,它具有某些提交并被推送到原点(我的分支)。现在我想在原始版本上更新分支A,然后在上游将更改从分支A合并到分支B

仅供参考,我已对上游分支A进行了更改。我想在上游的分支b上写下这些新的变化。

1 个答案:

答案 0 :(得分:1)

我的问题并不完全清楚,所以我只是假设一些事情。因此,我假设您要将来自本地 repo的分支 A 的提交合并到上游 repo的分支 B 。我假设fork和上游repos驻留在GitHub上(因为它被标记为GitHub)。

有很多方法可以执行此操作,具体取决于您是否对上游存储库具有写访问权限。合并共享仓库的推荐方法是第二个和第三个(使用Pull Request工作流程)

如果您具有上游仓库的写入权限

  1. 在您的本地回购中,将上游回购设置为您的远程仓库之一,如果您还没有(您可以将其命名为任何您想要的名称) ,但通常人们会将其命名为上游)。命令是

    git remote add upstream <url/path of your upstream repo>

  2. 通过执行(两个,按顺序)从上游获取分支 B

    git fetch upstream

    git checkout upstream/B

    OR(如果您已有B的本地副本)

    git checkout B

    git pull upstream

  3. 将B与A合并

  4. 当您在分支B时,执行git push upstream B

  5. 注意在本地合并到其他人的分支并将其推送到共享远程仓库被视为错误练习,因为分支的所有者可能没有意识到他/她远程分支被修改,这可能导致分支分歧和不必要的合并。

    如果您没有对上游仓库的写入权限

    这是大多数人通常使用的方法,无论他们是否具有对上游回购的写入权限。即除非在特殊情况下,尽管有写入权限,但通常人们不会直接向上游推进。

    1. 将分支 A 推送到原点(您的前叉)

    2. 转到GitHub上的上游回购并提交Pull Request。 (注意哪些分支到拉取请求,合并到

    3. 等待远程仓库的所有者/协作者接受您的请求。

    4. 另一种选择

      我注意到您提到您已在上游回购的分支A上进行了更改。在这种情况下,您可以立即执行拉取请求。如果您对repo有写入权限,则可以立即接受自己的Pull Request。同样,这是对共享仓库的糟糕做法,特别是如果分支B不归您所有,或者是共享分支。

      希望它有所帮助。