今天在工作中,想在Github
上建立一个repository
供大家协同开发,有人提出要可以进行code review
,之前在项目中用到过Gerrit
,但是这种小型项目感觉用Gerrit
有点大材小用。
总之,先尝试了一下Fork的使用。
Fork
USERA
在Github
上新建一个repository
,之后USERB
去Fork
这个repository
。然后clone
到本地。
$ git clone git@github.wdf.sap.corp:USERB/RepositoryName.git
这里用的是ssh url。
Commit
Clone
下来之后,USERB
可以进行编辑,比如新建一个err.md
文件,并填写一些内容。
$ git add filename
$ git commit
Push
之后,USERB
进行push
操作,注意,此时push
是到了USERB
的repository
。
如果想要让项目的原作者注意到,USERB
需要发起一个pull request
。
Pull Request
创建一个pull request
,base
是远程的USERA的repository
,head
是USERB
的repository
。
填写comment
,这时就可以等待原作者的同意并并入到原作者的项目中去了。
Keep Synced
此时大家可能会注意到一个问题,我们如何保持我们fork出来的项目和原项目同步呢?
$ git fetch [origin]
这条命令没有错,但是只是从USERB
的repository
的远程来拉代码,并不能解决同步问题。
这时我们需要设定一个新的remote
源。
$ git remote -v
查看当前的remote
。
origin git@github.wdf.sap.corp:USERB/RepositoryName.git (fetch)
origin git@github.wdf.sap.corp:USERB/RepositoryName.git (push)
新加一个新的remote
。
$ git remote add upstream git@github.wdf.sap.corp:USERA/RepositoryName.git
此时我们看到,remote
变成了四个。
origin git@github.wdf.sap.corp:USERB/RepositoryName.git (fetch)
origin git@github.wdf.sap.corp:USERB/RepositoryName.git (push)
upstream git@github.wdf.sap.corp:USERA/RepositoryName.git (fetch)
upstream git@github.wdf.sap.corp:USERA/RepositoryName.git (push)
之后,我们如果要保持代码同步的话,可以直接输入命令。
$ git fetch upstream
文献
参考文章: Fork and Pull, Fork a Repo