如何合并2个github存储库以触发pullrequest?

时间:2015-06-16 17:10:35

标签: git github merge fork rebase

我确信有大量的文档,但我没有看到任何内容。

我想为opensource projet做贡献,第一次做真正的PR。 (迟到总比没有好。)

为了简单起见,我只想把某人在github上做的工作(但没有推回到主人),做一些小的更新,然后尝试将PR制作到原始存储库

Master Repo是(R1):

分叉和更新的回购是(R2):(注意:在特定的分支中)

我在我的帐户上分发了ageneau repo

我的意图是:

  1. 在我的github帐户上做一个R2的分叉=我没有成功。它 总是在没有有趣分支的情况下把R1分给我。该怎么办 ? 事实上我已经添加了R1 Fork。所以我删除了R1 fork并成功在我的Github上分叉R2

  2. 然后获得当地回购:
    git clone https://github.com/afaucogney/loopback-sdk-android.git

  3. 添加原点
    git init
    git remote add origin https://github.com/afaucogney/loopback-sdk-android.git

  4. 添加上游(Strongloop版本)
    git remote add origin https://github.com/strongloop/loopback-sdk-android.git

  5. 创建本地分支
    cd loopback-sdk-android
    git branch firstpr
    git checkout firstpr

  6. 然后做什么,我希望

    git rebase起源于上游......但没有任何有趣的事情发生。

    请告知我关于该过程以及git命令。

2 个答案:

答案 0 :(得分:2)

让我们看一下非常详细的工作:

  1. 在Github上点击提供解决方案的仓库,点击" Fork"按钮:

    enter image description here

    所以你在你的Github(这里称为R3)帐户中得到一个分叉,如:

    enter image description here

  2. 在Github中,执行拉取请求:

    enter image description here

    其中:

    • 基础仓库是MilleZimTech fix_flatten分支(带解决方案的分支)
    • 比较仓库是Strongloop(R1)主分支

    就像那样(自Ageneau Fork以来所有提交的Strongloop提交):

    enter image description here

  3. 点击"创建拉取请求":

    enter image description here

  4. PR无法自动合并:

    enter image description here

  5. 克隆本地计算机上的分支(注意,程序与Github提出的程序不同)。使用--branch <branch-name>克隆特定分支

    git clone https://github.com/MilleZimTech/loopback-sdk-android.git --branch fix_flatten
    cd loopback-sdk-android
    git branch

    你应该看到&#39; fix_flatten&#39;分支

  6. 使用主仓库创建一个新分支:

    git checkout -b strongloop-master fix_flatten git pull https://github.com/strongloop/loopback-sdk-android.git master

    如果发生冲突。

    git status会显示修改过的文件。
    git add .添加新文件 git commit -am"merge fix_flatten master"提交更改 再次git pull https://github.com/strongloop/loopback-sdk-android.git master

  7. 切换fix_flatten分支

    git checkout fix_flatten

  8. 在没有FastForward合并的情况下合并两个分支

    git merge --no-ff strongloop-master

    您应该看到:

    enter image description here

  9. 推回Github回购

    git push origin fix_flatten

  10. 如果您使用git://而不是https://克隆回购,则需要:

    git remote set-url --push origin https://github.com/MilleZimTech/loopback-sdk-android.git,使用原始存储库的--push' because without, only the fetch`参数将被更新。

    再次git push origin fix_flatten

  11. 然后看看Github上的更改

    enter image description here

  12. 由于这是最新的fix_flatten分支,请在我的repo上的master分支上执行pull请求。

    选择fix_flatten分支,然后我们可以看到:

    enter image description here

  13. 点击PullRequest

    • base master分支
    • 比较fix_flatten分支
  14. 合并并确认PullRequest

    enter image description here

  15. 然后你可以安全地PullRequest Strongloop repo

    enter image description here

  16. 结束:

    Ouuuf ......这很难找到和描述。但我认为这可以帮助那些不了解git的人。从来没有,我无法理解为什么这么复杂和漫长。

    有没有人有更直接的方式来执行这样的常规任务?

答案 1 :(得分:1)

让我看看我是否理解正确。您是否尝试先拆除R2,先删除以前不再需要的叉子?

编辑: 这里的问题是你将两个repos分叉,只需要第二个repos,因为它是包含你需要的分支的那个。

此时您有两种选择: 1.-删除你在你的github帐户上做的分叉,然后再次只分叉R2。 2.-将R2添加为远程并创建git fetch R2以获取仅在R2上的分支。