实在是……有太多人同时在帮忙修订错别字或优化 xiaolai 的 [the-craft-of-selfteaching](https://github.com/selfteaching/the-craft-of-selfteaching)
了。若是你提交的 pull request 未被接受且获得回复说:“从新fork”,实际上是你遇到一个问题:git
- 在你 fork 以后, xiaolai 的仓库又更新了;
- 但 github 不会自动帮你把 xiaolai 的仓库 同步给你 fork 后的仓库;
- 致使你提交 pull request 时的版本和 xiaolai 的版本不一致。
这个问题,用显得更“专业点”的说法,叫作:Github进行fork后如何与原仓库同步
。那到底怎么作呢?github
最省事的办法多是:fetch
- 在你fork的仓库setting页翻到最下方,而后delete这个仓库;
- 而后从新fork xiaolai 的仓库,并 git clone 到你的本地。
有时候,你须要用到这个省事的办法,好比 xiaolai 的仓库再次整理了 commit 。但在更多状况下,删掉本身fork的库,应该是你的最后选择,而不该该是首选。优化
和不少人一块儿向 xiaolai 提交 pull request,这实在是一个反复练习 merge
(中文说法:合并,或版本合并)的机会。绝不夸张地讲,版本管理是软件工程极其重要的规范,也是极其基础的必备技能。而 merge
则是版本管理中最必须也最经常使用的场景。3d
那要否则,就多练练?如下是傻瓜版操做步骤,还细心配了截图,保管你从 0 也能上手。至于原理嘛,慢慢再搞懂吧。code
step 一、进入到本地仓库的目录。cdn
下面全部操做,如无特别说明,都是在你的本地仓库的目录下操做。好比个人本地仓库为/from-liujuanjuan-the-craft-of-selfteaching
blog
step 二、执行命令 git remote -v
查看你的远程仓库的路径:rem
若是只有上面2行,说明你未设置 upstream
(中文叫:上游代码库)。通常状况下,设置好一次 upstream
后就无需重复设置。同步
step 三、执行命令 git remote add upstream https://github.com/selfteaching/the-craft-of-selfteaching.git
把 xiaolai 的仓库设置为你的 upstream
。这个命令执行后,没有任何返回信息;因此再次执行命令 git remote -v
检查是否成功。
step 四、执行命令 git status
检查本地是否有未提交的修改。若是有,则把你本地的有效修改,先从本地仓库推送到你的github仓库。最后再执行一次 git status
检查本地已无未提交的修改。
git add -A
或者 git add filename
git commit -m "your note"
git push origin master
git status
注1:这一步做为新手,建议严格执行,是为了不大量无效修改或文本冲突带来的更复杂局面。
注2:若是你已经在fork后的仓库提交了大量对 xiaolai 的仓库并无价值的修改,那么想要pull request,仍是从新回到本文最初的“最省事办法”吧。
如下操做紧接着上面的步骤。
step 五、执行命令 git fetch upstream
抓取 xiaolai 原仓库的更新:
step 六、执行命令 git checkout master
切换到 master 分支:
step 七、执行命令 git merge upstream/master
合并远程的master分支:
step 八、执行命令 git push
把本地仓库向github仓库(你fork到本身名下的仓库)推送修改
若是担忧本身不当心改了哪里,能够再次执行命令 git status
检查哪些文件有变化。这个操做仅是检查,不会改变任何状态,放心用。
如今你已经解决了fork的仓库和原仓库版本不一致的问题。能够放心向 xiaolai 发起 pull request 了。若是以上操做你花了很多时间,而 xiaolai 的仓库 又刚好更新了。很好,一次新的练习机会来了……
小记:这份笔记最初整理于2019年3月。或许由于我平时git操做仅是简单的修改新增,与其它仓库协做少,因而这种上游仓库的设置与同步相关指令须要用时,仍是得搜到这篇笔记来看。那就发出来,或许也能帮到其余人吧~