相信数人和我一样对Git是久有耳闻,了解一些,但却没有实际的操作经验, 多次尝试却不能窥其门径。
最近因项目原因,强制使用了Git,突然豁然开朗。记录此文,以飨各类git小白爱好者。
Git与SVN的区别
第一点:也是最最重要的一点:Git是分布式,而SVN是集中式存储。
换句话说,你从Git中clone出来的也是一个仓库,你可以离线commit,做任何操作。
尤其是当你在家或者出差,或者没有网络环境时,你可以查看提交记录而无需去服务器获取信息。
当有了网络之后,再利用push命令将本地仓库推送到远端仓库
第二点: Git的文件存储方式与SVN不同。 SVN存储每个版本的差异,而Git存储的是每一个版本的快照 a cao
从下面这副图能看出:当版本发生变化时,如果文件发生了变化则存储一份新文件,而如果文件没有变化则记录上一个版本的链接。
第三点: Git的版本号与SVN不同。 SVN具有一个全局的版本号,而Git使用Hash值作为版本信息
具体来说,SVN的每次提交都是一个事务,当事务成功提交后,就会形成一个自增的版本号。
而Git并没有全局的版本号,只有每次提交的hash值。这个hash值既可作为版本号信息,也可以作为保证数据完整性的重要条件。
第四点: Git的元数据信息与SVN存储方式不同。 SVN的每一个文件夹中都有一个.svn目录,而Git只在根目录下有一个.git目录
意味着,Git的所谓导出,比svn要方便很多。只需要删除.git目录即可,而svn就费了劲了,需要删除每一个.svn目录
区别还有不少,不过我觉得以上几点是比较重要的区别。
Git架构说明
分布式架构:
从上图可以看出,每个客户端都拥有一个本地仓库,都拥有所有的历史提交记录。这一点和中央CVS系统,例如svn是大大不同的
文件的几种种状态:
从上图可以很清楚地看出git中文件的几种状态
- untracked: 还未添加到Git中的
- unmodified: 还未修改的
- modified: 已改动的
- staged:暂存的
Git的入门命令
配置:
在/etc/gitconfig或者~/.gitconfig 中配置用户信息
也可以使用git config -l 来查看配置信息
- 从远程获取仓库到本地仓库:git clone http://github.com/xxxxproject/.git
- 提交文件到本地仓库之中:git commit -m "注释"
- 添加文件到git版本控制之中: git add
- 从远程仓库获取文件:git get
- 从远程仓库获取文件并合并到本地仓库:git pull
- 将本地仓库推送到远程仓库:git push
- 列出远程仓库: git remote -v
其他参考