我相信很多小伙伴之前在工作中只用过svn,但是没用过git来管理代码。小编很有幸的在现在公司参加了git培训,而且是工作中的应用.
git与svn的不同之处
1. git是一个分布式的仓库管理工具, 每一个用户都有自己的本地仓库, 并不像svn,自有一个中央仓库.
2. GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏.
3. GIT分支和SVN的分支不同:
分支在SVN中一点不特别,就是版本库中的另外的一个目录。如果你 想知道是否合并了一个分支,你需要手工运行像这样的命令svn propget svn:mergeinfo,来确认代码是否被合并。感谢Ben同学指出这个特征。所以,经常会发生有些分支被遗漏的情况。
4. 2.GIT把内容按元数据方式存储,而SVN是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。如果你把.git目录的体积大小跟.svn比较,你会发现它们差距很大。因为,.git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。然而,处理GIT的分支却是相当的简单和有趣。你可以从同一个工作目录下快速的在几个分支间切换。你很容易发现未被合并的分支,你能简单而快捷的合并这些文件。
结构分析上,如下图所示:
git的基本操作
clone: 从私有仓库中,拷贝一份代码在本地仓库中。作为自己的本地仓库.
pull: 更新操作。
push: 提交本地仓库中的代码到私有仓库。
commit: 缓存区提交到本地仓库。
commit add: 如果修改的地方是添加操作, 比如添加文件,缓存区提交到本地仓库。
clear : 清空缓存区中的代码。
merge: 分支合并操作。
fork: 创建一个私有仓库。
pr:(poll request) 从某个分支更新到另外一个分支的操作。
实际应用
在我们公司, 我们有集中库、私有库、本地库 3个层级。
- 集中库
producation(基线)
hotfix(重大问题修复线)
release(发布版本线)
master(主线) - 私有库
hotfix
release
master
topic(开发线) - 本地库
hotfix
release
master
topic
总结
相对svn来说, git使用比较复杂一点。但是它却是一个很灵活的一个代码管理工具, 就算没有了集中库, 同事与同事之间也可以进行代码的管理。这就是分布式管理的一个好处, 自己就是一个独立的库,有点像“去中心化”思想,学会使用git来进行项目的开发, 还是不错的。