今天公司会议决定启用新的代码管理模式,其中涉及一个问题:如何进行自己的仓库和原仓库进行Git同步的操作
整体思路:
- 在自己的本地添加主repo为上游代码库,注意只是配置原仓库的路径,并没有真正clone原仓库,然后将远程主repo同步到自己本地的机器,然后本地的机器再push到自己的远程fork库上,所有操作都在本地命令行完成
具体做法:
- 在终端中配置原仓库的位置。进入项目目录,执行如下命令:查看你的远程库的路径。
$ git remote -v origin https://gitlab.com/YOUR_USERNAME/YOUR_FORK.git(fetch) origin https://gitlab.com/YOUR_USERNAME/YOUR_FORK.git(push)
- 配置原仓库的路径:
$ git remote add upstream https://gitlab.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git
- 再次查看远程目录的位置:
$ git remote -v origin https://gitlab.com/YOUR_USERNAME/YOUR_FORK.git(fetch) origin https://gitlab.com/YOUR_USERNAME/YOUR_FORK.git(push) upstream https://gitlab.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git(fetch) upstream https://gitlab.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git(push)
- 抓取原仓库的修改文件:
$ git fetch upstream
- 切换到master分支
$ git checkout master
- 合并远程的master分支
$ git merge upstream/master
- 此时本地库与远程git上的原仓库同步了,还需将本地库推送到自己fork来的库
$ git push
- 其实(4)(5)(6)可以合并成一条命令
$ git pull upstream master upstream 表示远程主repo master 表示自己fork库的master分支
- 移除上游映射
$ git remote rm upstream