赞
踩
问题场景:最近公司项目组不允许个人在远程仓库建分支,要求每个人fork一个仓库,以后就在自己fork的仓库里提交代码,通过pull request将代码合并到主仓库。
这里的问题在于,原来的主仓库更新后自己fork的仓库并不会自动同步,导致两个仓库的版本不一致。
在原项目的地址,比如https://gitee.com/A/xxxx.git上,点击fork按钮,即将项目复制到了自己的仓库中,地址是https://gitee.com/B/xxxx.git
下载到本地的项目会有一个默认的远程名origin
,但这个远程名并不指向A仓库,而是指向自己fork的B仓库,也就是说之后进行的pull、push操作都是在B仓库上进行的。这个时候就需要将A、B两个仓库进行关联了
执行命令git remote -v
查看远程仓库路径,如果只返回了两行结果,说明这时A、B两个仓库还未进行关联
origin https://gitee.com/B/xxxx.git (fetch)
origin https://gitee.com/B/xxxx.git (push)
执行命令git remote add upstream https://gitee.com/A/xxxx.git
将A仓库设为B的上游代码库,upstream的名称可以随便取,写abc也可以,之后B就用upstream这个名字与A进行联系。再次查看远程仓库路径,检查是否设置成功
upstream https://gitee.com/A/xxxx.git (fetch)
upstream https://gitee.com/A/xxxx.git (push)
origin https://gitee.com/B/xxxx.git (fetch)
origin https://gitee.com/B/xxxx.git (push)
执行命令git fetch upstream
获取A上的更新(此时并不会修改本地代码)。然后执行git merge upstream/master
将代码合并到自己的master分支上。或者直接使用git pull upstream master
命令。
通过之前的操作,只是将自己的本地库和原来的远程库进行了同步,所以还需要将fork的仓库也进行同步才行。git push origin master
,将代码push到B仓库,到这里才算将代码全部同步。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。