SVN
1、SVN和Git的区别
- SVN是集中式的,也就是会有一个服务器保存所有代码,拉取代码的时候只能从这个服务器上拉取;Git是分布式的,也就是说每个人都保存有所有代码,如果要获取代码,可以从其他人手上获取
- SVN没有本地分支,所以只能联网才能提交;Git有本地分支,所以不管是否联网都可以提交到本地分支,只是最后push到远程仓库的时候需要联网
- SVN建议先update再commit,而Git建议先pull,然后再commit and push
- PS:我之前的公司用的是SVN,结果后来服务器中病毒了,混乱了好一阵子,最后老老实实改用git了
2、SVN的基本操作
- add(添加):添加文件到SVN版本控制中
- commit(提交):用于提交本地修改到svn服务器中
- revert(还原):用于撤销本地未提交的修改
- update(更新):用于拉取服务器中最新的代码
Git
1、Git的使用
- Git Bash:Unix与Linux风格的命令行,使用最多
- Git CMD:Windows风格的命令行
- Git GUI:图形界面的Git,不建议初学者使用
2、Git的常用命令
- ls、rm、mv、cd、touch等,基本和linux命令差不多
3、Git工作区域
- Workspace:工作区,就是你平时存放项目代码的地方
- Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
- Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
- Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
4、工作流程
- 在工作目录中添加、修改文件;
- 将需要进行版本管理的文件add放入暂存区域;
- 将暂存区域的文件commit提交到git仓库;
- 使用pull获取远程仓库的所有改动,以免冲突;
- 如果需要提交到远程仓库,则还需要push到远程仓库
5、Git分支、合并、变基
-
新建分支:从当前分支复制出一份新的分支,在新的分支上进行的操作不会影响其他分支
-
合并:就是将两条分支合并到一条支线上,如果有冲突,保留哪些内容自行决定,其提交历史如下,会分岔,即保存两条分支的提交历史
-
变基:变基的原理是首先找到这两个分支(即当前分支 experiment、变基操作的目标基底分支 master) 的最近共同祖先 C2,然后对比当前分支相对于该祖先的历次提交,提取相应的修改并存为临时文件, 然后将当前分支指向目标基底 C3, 最后以此将之前另存为临时文件的修改依序应用。提交历史如下,是一条完整的直线而没有其他分支
参考
- Git整合分支的两种方法——合并(git merge)与变基(git rebase)的区别
- SVN基本介绍、工作原理、基本操作和其他说明