git和svn 最大的差异在于git是分布式的管理方式而svn是集中式的管理方式。
集中式
集中式代码管理的核心是服务器,所有开发者在开始coding之前必须从服务器获取代码,然后开发,最后解决冲突,提交。所有的版本信息都放在服务器上。
基于集中式的代码管理,完全依赖于代码服务器,如果是离线的情况下服务器不能连接,那本地的所有修改将无法提交,当然也无法还原到上个版本、无法对比。这对于快速迭代将是致命的!
分布式
分布式和集中式最大的区别就是:每个开发者机器都是一个独立的代码服务器。这样即使无法连接到服务器时,本地同样可以做合并、还原、对别、提交等操作。
具体协作流程
-
执行 git clone 从代码仓库克隆到本地
-
在本地创建分支,进行coding
git checkout -b tianpo
-
在本地创建的分支上提交代码
git add . git commit -m 'add files'
-
每天把本地分支push到远程仓库同名分支上,每个人都有自己的远程分支;
git push 仓库地址 master:tianpo
-
代码维护人员每天下班前把各个项目成员的分支fetch到本地,然后依次合并到devlop分支,任何一个成员的分支出现问题,及时当面解决冲突。所有分支合并完成,把整合好的devlop分支push到远程仓库devlop分支。
git checkout -b tianpo
git fetch orign tianpo:tianpo
git checkout devlop
git merge tianpo
-
项目组员每天开始coding之前fetch下远程仓库中devlop分支并合并到自己的分支上。
在整个开发周期按照上述步骤迭代,实现小团队之间的协作。