如何使得github上fork的repo与origin保持同步
在日常工作中使用github时,特别是在参与开源项目时,我们可能会需要从一个他人创建的Repository中,fork出这个项目到自己的Repository,而他人的Repository是没有给我们开放这个项目的直接维护权限的。
通常我们需要做的,是需要在自己的Repository中对此项目进行代码的增删改,提交到自己的Repository后,再创建一个PR(Pull Request)到他人的Repository。
这里面临的一个问题是,由于不只是我们自己在向这个项目贡献代码,其他人也可以fork,也可以PR,那么当原来的Repository中的代码更新了后(包括自己的PR被merge到原来的Repository),我们怎么才能确保自己Repository的代码也可以同步了呢?
在这之前,我们先看下github上的这篇文章
https://help.github.com/articles/syncing-a-fork/
在看过上述的文章后,再来理解下面的操作就会比较容易了。
以我所参与的nodejs中文翻译计划为例,此处使用TortoiseGit进行解释,步骤非常简单:
原库: https://github.com/nodejscn/node-api-cn
我自己的库:https://github.com/wxqsly/node-api-cn, 是从原库fork的
- 使用TortoiseGit将自己的库的代码clone一份,并放在文件夹wxqsly下面,即wxqsy/node-api-cn
- 在文件夹wxqsly中,右键选择node-api-cn,使用TortoiseGit的Git Sync工具
- 在打开的Git Syncronization对话框中,点击Manage
- 在点击Manage按钮后弹出的Settings窗口中,选择左侧的Git->Remote,会出现配置Remote的相关信息
将其中的URL配置为原库的URL,
Push URL配置为自己的库URL即可。
这样便能保证在每次下行更新时,是从原库更新并Merge原库中的变化;而在上行提交时,是提交到自己的库,自己再可以根据实际情况提交PR到原库。