某一天,你在github上看到了一个很棒的仓库,你感觉不错,于是你fork了这个仓库。然而某一天,仓库原作者批改了一些bug和减少了一些性能。依照现实状态下,如同感觉这个源仓库都更新了,那么我拷贝的这个仓库也会主动同步更新吧?
真实情况其实是:并不会自动更新,因为如果git这样设计的话会造成一些不可预知的状况产生。同步源仓库是现实状态下实现的成果,然而如果咱们在实现本人的我的项目的时候,忽然源仓库更新了,后果你当初我的项目的一些逻辑和之前不匹配了,这问题就大了。
在理论开发过程中常常会遇到上这样一种场景,须要同步上游仓库的代码。
办法一
回到正题:git如何同步上游仓库(以apisix-dashboard仓库为例)
因为记录这篇文章也是我学习的过程,所以我会从头开始缓缓解说,以不便初学者查阅。
一.首先关上github
看到咱们之前fork过的仓库,点进去会看到醒目的一个Fetch upstream
点击Compare按钮会呈现到一个比拟以后仓库和更新后仓库不同的中央,你能够通过这里简略的查看文件有哪些差别。
点击 Fetch and merge按钮,看到这两个单词,其实咱们曾经能猜出来它的性能是什么了,git fetch and git merge,具体实现了什么,咱们马上就会解释。(上面是点击当前的界面)
这里须要解释分明的是,这一步仅仅是将你本人fork的仓库代码和源仓库代码同步了,然而你本地工作区的仓库还没有更新。
二.回到vscode
执行git pull命令,将近程本人仓库的代码拉到本人的工作区即可。
如果曾经是最新的代码,会呈现上面的提醒。
办法二
在这里须要进一步补充的内容是。其实下面的办法是接下来要讲的内容的语法糖(能够这么了解)
咱们某一天不能查看github,然而咱们晓得上游仓库曾经更新,想要把本地仓库更新为最新的上游仓库,和源仓库代码保持一致呢?这样该怎么办呢?(还有一种简略的,把当初的仓库删除,从新fork,而后从新clone也可,这里不探讨)
一.关上终端切换到以后代码门路下
输出git remote
,查看你以后近程仓库
这个代表什么意思呢?简略了解就是,本地工作区只和这个origin近程仓库产生关系,不论是fetch 和 push 其实都是操作的这个仓库。如果在当前目录下执行git fetch
命令,其实相当于写了git fetch origin master
只不过省略了前面的origin mater
而已。
那咱们应该如何和近程上游仓库建设起分割呢?这里须要用到git remote add <name> <url>
这个命令,具体怎么实现如下:
<name>是咱们自定义设置的,要害就是这个url在哪里获取?
首先,点击这里进入到源仓库
而后复制这里的地址即可
切换到终端执行上面命令
输出git remote -v
查看当初近程仓库的信息
二.追踪查看上游代码
输出git fetch upstream master
命令,留神这里如果应用git fetch
其实还是默认拉下来origin的代码,肯定要fetch upstream
,这样才是把上游代码拉到本地查看。(我这里写了master,意思就是只拉下来上游master分支查看,省略的话就是拉下全副分支的代码)
接下来就是merge upstream/master
三.推送到origin 仓库
git push
即可
当初你的仓库曾经和上游master仓库同步了~