最近在GitHub上fork了别人的一个项目,是关于数据科学学习的一个项目,Git地址如下:https://github.com/fengdu78/Data-Science-Notes.git(黄海广老师整理的数据科学笔记),但是如果黄海广老师在这个项目上改动了,比如加了一些知识点,我fork到我自己GitHub上的项目如何保持同步的更新呢?
其实只需要下面三步:
- 把fork的项目克隆到本地仓库中
- Configuring a remote for a fork
- Syncing a fork
下面操练一遍:
1. 把fork的项目克隆到本地仓库中
git clone
首先,在本地GitHub库中开启一个shell,我本地的GitHub库放到了E盘
然后输入命令
git clone "https://github.com/zhongqiangwu960812/Data-Science-Notes.git"
后面这个地址是我fork项目在我GitHub的地址。这样完成之后,就会发现我的本地仓库中多了一个Data-Science-Notes的文件夹。说明你已经把仓库克隆到本地了。
PS: 如果不会使用GitHub怎么办?
见我笔记:快速上手GitHub大全
2. Configuring a remote for a fork
- 给 fork 配置一个 remote
- 主要使用 git remote -v查看远程状态。
克隆了fork项目到本地之后,进入那个项目文件夹,我就进入Data-Science-Notes的文件夹,然后输入命令
git remote -v
查看远程状态如下:
- 添加一个将被同步给 fork 远程的上游仓库
git remote add upstream https://github.com/fengdu78/Data-Science-Notes.git
这里的地址是你fork的项目的源地址。
- 再次查看状态确认是否配置成功。
git remote -v
有了下面那两个upstream,说明第二步已经成功了。这就相当于有一个管道在源项目和你fork的项目之间建立了,下面看看如何通信更新。
3. Syncing a fork
- 从上游仓库 fetch 分支和提交点,传送到本地,并会被存储在一个本地分支 upstream/master
git fetch upstream
- 切换到本地主分支
git checkout master
# Switched to branch 'master'
- 把 upstream/master 分支合并到本地 master 上,这样就完成了同步,并且不会丢掉本地修改的内容。
git merge upstream/master
由于我是刚刚fork的,肯定是最新的项目了,所以提示Already up to date. 如果源项目有更新而你fork的项目没更新的话,这里就会显示不同了。
这样,就把源项目同步更新到你的本地仓库中了。 如果再想更新到远程仓库fork,只需要:
git push origin master