代码之家  ›  专栏  ›  技术社区  ›  R. Martinho Fernandes

GitHub中分叉之间的合并

  •  290
  • R. Martinho Fernandes  · 技术社区  · 16 年前

    我分叉了一个GitHub仓库。然后,我将一些更改推送到我的fork。然后,原始存储库合并了我的更改和其他一些更改。现在,我想合并我缺少的那些更改。我尝试了一个简单的pull和push,但这会产生两个commits。最好的方法是什么?

    2 回复  |  直到 16 年前
        1
  •  367
  •   hfingler Jim Puls    4 年前

    您可能为每个存储库都有一个“远程”。你需要从一个遥控器拔出并推到另一个。

    如果你最初是从你的叉子克隆的,那么那个遥控器将被称为“origin”。如果您还没有添加它,则需要将另一个存储库添加为另一个远程存储库:

    git remote add <shortname> git://github.com/<ownerName>/repo.git
    

    完成所有设置后,您确实应该能够(github将默认分支从 master main

    git pull <shortname> master
    git push origin
    

    记得, git pull 只不过是一个宏 git fetch git merge ,按照这个顺序。你只需要从另一个存储库中获取提交列表,然后将他的分支合并到你的树中。合并应该对两个分支上的提交做正确的事情。

    当然,GitHub以其永恒的魅力为你提供了一条捷径。在存储库的分支上有一个“快进”按钮,如果你完全合并到另一端,你可以使用它来赶上你的分支。

        2
  •  79
  •   Star Bob Spryn    5 年前

    因此,上述公认的答案对我来说并不完美。也就是说,它在工作时似乎失去了与原始github作者的链接,然后在那之后似乎不再工作了。我认为问题是答案遗漏了远程名称和分支之间的/。因此,它会从远程获取一个名为master的分支,但随后无法对其进行任何操作。不知道为什么。

    这是方法 github recommends from their site .

    一旦你克隆了你的分叉仓库,你确实需要像前面的答案一样添加一个指向原始仓库的远程。他们喜欢称之为上游,但这并不重要。

    git remote add upstream git://github.com/octocat/Spoon-Knife.git
    

    然后你去拿

    git fetch upstream
    

    您将看到可用于合并的版本

    From git://github.com/octocat/Spoon-Knife.git
     * [new branch]      gh-pages   -> upstream/gh-pages
     * [new branch]      master     -> upstream/main
    

    然后,您只需选择要合并的分支。请注意,这些不是本地分支,它们存储在远程下。但是,如果你没有一个名为upstream/master的本地分支(这是允许的),你应该很好地与下面的行合并:

    git merge upstream/main
    

    git pull upstream/main
    
    推荐文章