使用Git与Github多人协同开发流程
假设目前有两个开发者A和B共同完成一个项目,首先确定一个主开发者,这里就假定为开发者A了。
首先开发者A在自己的Github上创建一个远程仓库,然后再在本地创建一个本地仓库,再将本地和Github关联起来,干完这些工作后开发者A就开始愉快地写代码(作为主开发者可能就先把大体框架搭建起来),框架搭完后将代码提交到本地仓库中,然后push到自己的Github远程仓库上,由于A是主开发者那他肯定是项目的管理者,所以他的Github远程仓库可以是为源仓库,那么开发者B自然而然就是拉下手的。
开发者A将自己写的代码推送(push)完了之后,然后就是开发者B大显身手的时刻了,开发者B克隆(clone)了源仓库,也就是开发者A的之前push到自己的Github上的项目,B大刀阔斧地写完代码后直接一个push,咦…怎么推送不上去,提示什么权限问题,你当然push不上去,因为那是别人的仓库(而且你也没有关联),要是你直接能推送上去,那代码世界岂不要毁灭了。
好吧,正确的做法是:开发者B先Fork开发者A的Github上的仓库,Fork的就相当于建立一个分支(拷贝别人的项目),Fork了之后开发者A的Github上会出现一个和开发者A一模一样的仓库,然后开发者B在clone自己的Github上的仓库到本地,这样就可以开工了,写完代码后先push到自己的Github远程仓库中,就在此刻机智的同学会发现:如果在开发者B写完后准备push的时候,勤奋的开发者A又同时写了其它模块并且已经push到Github上了,这可咋办哩!
别方,Git早已为我们想好了一切,此时的话要做的工作就是将开发者A远程仓库的更新同步到开发者B的本地,那么fetch就可以闪亮登场了,fetch就是从远程仓库中抓取本地仓库中的没有的数据,别急,fetch仅仅只是抓取数据,之后还得用merge合并一下分支,哇…合并成功没有发生冲突,这样B终于可以推送了,最后再在Github上Pull request一下,就是给主开发者A发送一个请求,请求合并项目,最后A看了一下B写的功能,觉得挺不错的,然后同意了开发者A的request(merge),就这样两人愉快的协作着……