【问题标题】:Merging between forks in GitHub在 GitHub 中的分支之间合并
【发布时间】:2010-11-10 12:51:02
【问题描述】:

我创建了一个 GitHub 存储库。然后我将一些更改推送到我的 fork。然后原始存储库合并了我的更改和其他一些更改。现在,我想合并我缺少的那些更改。我尝试了一个简单的拉,然后是推,但这会产生我的重复提交。最好的方法是什么?

【问题讨论】:

    标签: git github


    【解决方案1】:

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

    如果您最初是从 fork 克隆的,则该远程将被称为“origin”。如果您尚未添加它,则需要将另一个存储库添加为另一个远程:

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

    所有设置完成后,你应该确实可以(github将默认分支从master更改为main,根据需要进行更改)

    git pull <shortname> master
    git push origin
    

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

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

    【讨论】:

    • 有没有办法完全通过远程操作来做到这一点?如果我理解正确,使用这种方法,您会将所有更改下载到本地存储库,然后将它们全部上传(推送)回 github 上的 fork。我宁愿以某种方式将所有更改直接拉到 github 上的 fork 中。
    • 没有。 Git 不支持。不过幸运的是,Github 现在的 Web 界面中有一个合并按钮。
    • @cweiske - 这个合并按钮在哪里?我浏览了所有管理页面和主页,但找不到它:(。
    • @Adam,它在拉取请求页面上。因此,forker 会打开一个 Pull Request 以将他们的一个分支合并到您的一个分支。在那里你可以点击合并按钮。
    • 按钮Fast-forward 似乎不再可用。有关信息,我在命令中使用了另一个 git URL:git remote add snaury git@github.com:snaury/script-runner
    【解决方案2】:

    所以上面接受的答案对我来说并不完美。即,它似乎在工作时失去了与原始 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
    

    【讨论】:

    • 问题是,如果您已经有更改,您合并的更改将创建一个合并提交。在某些情况下有用,但大多数时候有点无意义。
    • 在这种情况下使用git rebase 会更好,并且省去那些丑陋的空合并提交
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    相关资源
    最近更新 更多