SVN是集中式的管理方式。大致流程如下:
- 从服务器上将整个项目代码检出到本地电脑硬盘中(一般来说,是从主分支上下载的代码)。
- 然后在svn服务器中建立新的开发分支,将硬盘中的代码提交到该开发分支中。(其实就是新开分支)。
- 接下来就开始开发工作,新增、删除、修改、重写代码将在这段时间内完成
- 临近结束的时候,将新开发的代码提交到第二步新开的分支中。
- 将该分支的代码合并到主分支中,消除冲突,工作就基本结束。
注意:
往往实际的开发过程中,会有好几个程序员共用一个分支上的同一批文件,当在共同工作的时候,代码修改之间势必会产生冲突,所以应该在要修改之前,先将本地硬盘中的代码更新到开发分支上最新的代码,然后改完后再阶段性提交。
Git 是分布式的管理方式
这点和svn有很大差别,它可以让开发者本地提交,每个开发者的机器上都有一个服务器的数据库。流程如下:
- 从服务器上将代码克隆到本地(这点类似svn的第一步)
- 在本地创建分支,修改代码(svn是在服务器创建分支)
- 在本地创建的分支上提交代码(很不一样吧)
- 在本地合并代码
- 新建一个分支,把服务器上最新版的代码fetch下来,然后和自己的主干合并(相当于重复了第一步,只是将新版代码fetch到新的分支而已)
- 生成补丁(patch),把补丁发送给主开发者。
- 看主开发者的反馈,如果与其他人的代码有冲突,则先解决冲突,然后再提交一份代码。(相当于整理了补丁,最后生成一个补丁用于更新服务器端的主干)
这种管理方式是强调个体的,个体开发者不用经常与服务器交互,几乎可以离线工作,服务器也没有大的压力。
git 常用命令介绍
由于是基于linux的软件,所以需要命令行来控制该管理工具,慢慢来吧
git init
创建一个数据库
git clone
复制一个数据到指定文件夹
git add
和 git commit
把想提交的文件add上,然后commit这些文件到本地数据库
git pull
从服务器下载数据库,并跟自己的数据库合并
git fetch
从服务器下载数据库,并放到新分支,不跟自己的数据库合并
git whatchanged
查看两个分支的变化
git branch
创建分支,查看分支,删除分支
git checkout
切换分支
git merge
合并分支,把目标分支合并到当前分支
git config
配置相关信息,例如email和name
git log
查看历史版本
git show
查看版本号对应版本的历史,如果参数是HEAD查看最新版本
git tag
标定版本号
git reset
恢复到之前的版本