美文网首页
git如何更新fork的repository

git如何更新fork的repository

作者: 小流江海 | 来源:发表于2018-08-15 10:55 被阅读0次

    Fork一个别人的repository,做了一些改动,想提交pull request的时候,发现原先别人的repository已经又有了一些更新了,这个时候想使得自己fork出的repository也得到这些更新,即和原repository同步,该怎么做呢?这个问题应该被问烂了,stackoverflow上也有解答,基本上是指向的GitHub上的官方文档。最主要的是这2篇:

    https://help.github.com/articles/configuring-a-remote-for-a-fork/

    https://help.github.com/articles/syncing-a-fork/

    本文略作翻译,以中文解答这个问题。

    首先,检查一下当前的配置,看看当前有没有已经设置了上游,这要使用 git remote -v 命令。如下:

    以上表明,origin这个repository对应的是远端的https开头的这个链接指向的repository,即自己fork出的repository.

    第二步,将原repository设置为自己fork出的repository的上游(upstream)。运用如下的命令:

    运用第一步中提到的git remove -v命令再次检查一下,结果如下:

    第三步,运行 git fetch upstream 命令,如下:

    以上表明,远程的原repository上确实有一些更新,现在它们已经被download到本地的.git文件夹下了,但是还没有合并到本地的代码中。

    第四步,git checkout master,这是保证切换到本地的repository的master上,如果本来就在,那么这一步不是必须的。

    第五步,运行 git merge upstream/master 命令,将upstream/master上的更新合并到本地的master上,其实就是将第三步中download到.git文件夹下的那些change合并到本地的master中。如下:

    如果本地没有什么自己独立的更新的话,那么将执行"Fast-forward"的合并。如果本地有自己独立的更新,而又会引起冲突的话,则要解决冲突,再commit.

    关于解决冲突,如果明确所有冲突都是使用upstream/master上的来override自己的,那么可以直接运行如下命令,则无需解决冲突了:

    注意,以上步骤结束后,仅仅是本地的fork出的repository和原repository取得了同步,如果想让远程的fork出的repository也同样取得同步,必须再git push上去。

    相关文章

      网友评论

          本文标题:git如何更新fork的repository

          本文链接:https://www.haomeiwen.com/subject/pvvibftx.html