一开始对版本管理概论很模糊,仅仅知道保存本地,但弊端不少,一是须要单独记录每次改动的内容,但也仅仅以标签的形式记下来,二是回退十分麻烦,还常常容易出错,每每尚未重来的快,更别提安全备份没保存这些让人分分钟丧失从新作人的事情了;git
这时候接触到了ClearCase,我最先使用的版本管理工具(拖外包公司的福),用下来感受就是巨复杂、客户端很是卡、安装包超大,还常常碰到各类问题可是很难找到资料去解决,后来就开始改用 svn;windows
Subversion,估计是 ClearCase 挺贵的,后来就没再用了,公司在一台单独的服务器上搭建了svn服务,而咱们就只须要在本地安装一个 svn 客户端就能够提交和更新代码了,以前公司大都在 windows 环境下开发,因此通常使用 svn 客户端的形式或 IED 集成的 svn 插件,慢慢的用着就变成了单纯的代码托管的地方;安全
后来接触到了 git,传说中 linus 编写的版本管理工具,恩,自带人性化高端光环;服务器
版本控制系统,顾名思义是能够有效、高速的处理从很小到很是大的项目版本管理(度娘扒的),高效的管理每每能把一群乌合之众变成一支精锐之师,多多益善应该就是这样的,git 会帮你记住每次改动的详细过程,而且能够随时切换到任意的一个状态;svn
git --help工具
最经常使用的 git 命令有:
add 添加文件内容至索引
bisect 经过二分查找定位引入 bug 的变动
branch 列出、建立或删除分支
checkout 检出一个分支或路径到工做区
clone 克隆一个版本库到一个新目录
commit 记录变动到版本库
diff 显示提交之间、提交和工做区之间等的差别
fetch 从另一个版本库下载对象和引用
grep 输出和模式匹配的行
init 建立一个空的 Git 版本库或从新初始化一个已存在的版本库
log 显示提交日志
merge 合并两个或更多开发历史
mv 移动或重命名一个文件、目录或符号连接
pull 获取并合并另外的版本库或一个本地分支
push 更新远程引用和相关的对象
rebase 本地提交转移至更新后的上游分支中
reset 重置当前HEAD到指定状态
rm 从工做区和索引中删除文件
show 显示各类类型的对象
status 显示工做区状态
tag 建立、列出、删除或校验一个GPG签名的 tag 对象fetch
通常本身用到的就是建立分支,而后修改,最后合并到主线上;插件
git 的工做区和暂缓区:版本控制
git 有个特殊的地方就是暂缓区,也就是 git add 这步所用到的,git add 将要提交的内容放到暂缓区,git commit 命令就是把暂缓区里面的全部修改所有提交; 日志