每次fork代码后进行团队协作时就会遇到代码不同步的问题,这篇文章就记录一下fork后代码同步的详细过程
Step.1:在Github上fork
项目
这一步就不用解释了,在原项目上点击 fork
就行
Step.2:拉取fork的项目到本地
注意:这里拉取的是 自己Github 上的fork
的项目,而不是源项目。
Step.3:进入本地仓库所在目录
这里我用的是Git bash
,直接进入本地仓库
Step.4:执行git remote -v
查看远程仓库路径
如果上面只有两行,那就说明没有设置upstream
。这两行是自己的远程仓库的地址,所以要设置源项目远程仓库的地址。
Step.5:设置源项目远程仓库地址
执行命令git remote add upstream https://github.com/pkussoj/OnlineJudge_BasedOnQDU.git
这个命令时添加源项目(也就是你fork的项目)的远程仓库地址,执行后没有返回信息。
然后,再执行git remote -v
查看是否成功:
Step.6:执行git status
检查本地是否有未提交的修改
如果有,则把你本地的有效修改,先从本地仓库推送到你的github仓库。
提交修改的过程如下:
git add filename
或者git add .
git commit -m "your note"
git push origin master
最后再执行一次 git status
检查本地已无未提交的修改。
注意:这一步是为了避免大量无效修改或文本冲突带来的更复杂局面。建议执行。
Step.7:执行命令 git fetch upstream
拉取更新
从源代码仓库拉取最新代码
我这里是已经拉取过最新的代码,所以没有返回信息
Step.8:切换分支git checkout master
正常情况下分支应该就是master
,如果是,则可以跳过这一步。
也可以切换到任意分支,拉取你想要分支的代码。
Step.9:合并远程分支git merge upstream/master
合并远程分支代码到本地仓库,执行完该命令后,可以看到本地仓库的代码已发生修改。
Step.10:执行git push
推送本地代码到远程仓库(自己的)
后记:
上面步骤就是完整步骤,执行完后就可以得到更新后的代码仓库。
其实,Step.7,Step.8,Step.9 可以合并为一个步骤:
git pull upstream master
这里的git pull
命令时将远程仓库代码拉取到指定分支,这里也就是将源仓库代码直接拉取到本地master
分支。
最后再执行git push
推送到自己的远程仓库
相关命令的解释可以参考:https://blog.csdn.net/weixin_43207025/article/details/105460595
参考资料:
https://github.com/selfteaching/the-craft-of-selfteaching/issues/67