Github进行fork后如何与原仓库同步

Github进行fork后如何与原仓库同步

https://github.com/selfteaching/the-craft-of-selfteaching/issues/67

1. 场景描述

太多人同时在帮忙修订错别字或优化 xiaolai 的 the-craft-of-selfteaching 了。如果你提交的 pull request 未被接受且得到回复说:“重新fork”,其实是你遇到一个问题:

  • 在你 fork 之后, xiaolai 的仓库又更新了;
  • 但 github 不会自动帮你把 xiaolai 的仓库 同步给你 fork 后的仓库;
  • 导致你提交 pull request 时的版本和 xiaolai 的版本不一致

这个问题,用显得更“专业点”的说法,叫做:Github进行fork后如何与原仓库同步。那到底怎么做呢?

2. 省事方法

  1. 在你fork的仓库setting页翻到最下方,然后delete这个仓库;
  2. 然后重新fork xiaolai 的仓库,并 git clone 到你的本地。

3.实用方式

和很多人一起向 xiaolai 提交 pull request,这实在是一个反复练习 merge (中文说法:合并,或版本合并)的机会

Merge 前的设定

  1. 进入本地仓库的目录
    比如我的本地仓库为/from-liujuanjuan-the-craft-of-selfteaching
  2. 执行命令 git remote -v 查看你的远程仓库的路径:

    如果只有上面2行,说明你未设置 upstream (中文叫:上游代码库)。一般情况下,设置好一次 upstream 后就无需重复设置。
  3. 执行命令(把 xiaolai 的仓库设置为你的 upstream)
git remote add upstream https://github.com/selfteaching/the-craft-of-selfteaching.git

命令执行后,没有任何返回信息,再次自行 remote -v 检查是否成功

git remote -v


4. 执行命令 git status 检查本地是否有未提交的修改。如果有,则把你本地的有效修改,先从本地仓库推送到你的github仓库。最后再执行一次 git status 检查本地已无未提交的修改。

Merge的关键命令

  1. 执行命令 git fetch upstream 抓取 xiaolai 原仓库的更新
# 抓取 xiaolai原仓库的更新
git fetch upstream 


6. 执行命令 git checkout master 切换到 master 分支:

7. 执行命令 git merge upstream/master 合并远程的master分支:

8. 执行命令 git push 把本地仓库向github仓库(你fork到自己名下的仓库)推送修改
如果担心自己不小心改了哪里,可以再次执行命令 git status 检查哪些文件有变化。这个操作仅是检查,不会改变任何状态,放心用。

现在你已经解决了fork的仓库和原仓库版本不一致的问题。可以放心向 xiaolai 发起 pull request 了。如果以上操作你花了不少时间,而 xiaolai 的仓库 又恰好更新了。很好,一次新的练习机会来了……

posted @ 2024-04-21 13:01  爱新觉罗LQ  阅读(75)  评论(0编辑  收藏  举报