背景
工作中需要用到git进行代码管理, 每个项目成员都需要fork出自己库,然后在前端网页上发起Merge Request才能提交到主库上去;这种方式有个问题就是自己fork的库怎么与主库保持同步,github并没有提供一个机制。通过两种方法可以完成。
第一种, 反向 pull request (页面操作)
首先,创建pull request。由于我从来没在fork库上提交过代码,所以这里显示没有任何东西用于比较
创建pull request然后,反向设置。注意这里反向设置的时候,通过一个中间版本库过度(两边的版本库相同的话,版本库会被合并处理,导致无法设置),思路类似交换两个变量的值,需要中间变量temp。
pull request 反向值得注意的是,提醒这是一次big comparision,因为我很久没有与主库同步了。
然后,填写主题,生成pull request。
最后,自己的fork库自己做主,作为committer,毫无疑问Merge啦。至此,主库之前的修改全部合并到fork库。
点击 merge pull request 查看pull request记录第二种,配置upstream指向fork的原仓库
1、查看现有的远程仓库:
$ git remote -v
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
2、添加指向原仓库的upstream:
$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git
3、查看origin和upstream
$ git remote -v
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)
4、直接从原仓库的master分支拉取代码并直接合并代码,其中pull=fetch+merge.
git pull upstream master
5、至此,本地库已经和原仓库已经完全同步。但是注意,此时只是你电脑上的本地库和远程的github原仓库同步了,你自己的github仓库还没有同步,此时需要使用“git push”命令把你本地的仓库提交到github中
参考
1 配置upstream指向fork的原仓库
https://blog.csdn.net/starter_____/article/details/79321962
2 廖雪峰的git教程
https://www.liaoxuefeng.com/wiki/896043488029600/897884457270432
3 可参考GithubHelp的 Configuring a remote for a fork 和 Syncing a fork
网友评论