您的位置:首页 > 其它

走进Git的世界

2016-07-27 19:39 357 查看
如果你在读这篇文章,说明你跟大多数开发者一样对GIT感兴趣,如果你还没有机会来试一试GIT,我想现在你就要了解它了。

GIT不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。如果你是一个具有使用SVN背景的人,你需要做一定的思想转换,来适应GIT提供的一些概念和特征。所以,这篇文章的主要目的就是通过介绍GIT能做什么、它和SVN在深层次上究竟有什么不同来帮助你认识它。

不搞卵弹琴了,直接说重点,git与svn有啥区别呢?不急不急,老衲慢慢给你们讲解:

   1.GIT是分布式的,SVN不是:一说分布式,大家可能就懵逼了,分布式就是指每个开发人员从中心版本库/服务器上chect
out代码后会在自己的机器上克隆一个自己的版本库。可以这样说,如果你被困在一个不能连接网络的地方时,就像在厕所蹲坑时、飞机上,地下室,电梯里等,你仍然能够提交文件,查看历史版本记录,创建项目分支,等。对一些人来说,这好像没多大用处,但当你突然遇到没有网络的环境时,这个将解决你的大麻烦。而SVN是一种万众瞩目的集中式方式来进行管理,所有终端都直接对应SVN代码服务器!

2.GIT把内容按元数据方式存储,而SVN是按文件:

所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。如果你把.git目录的体积大小跟.svn比较,你会发现它们差距很大。因为,.git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。

3.GIT分支和SVN的分支不同:

分支在SVN中一点不特别,就是版本库中的另外的一个目录。如果你想知道是否合并了一个分支,你需要手工运行像这样的命令svn
propget svn:mergeinfo,来确认代码是否被合并,所以,经常会发生有些分支被遗漏的情况。

然而,处理GIT的分支却是相当的简单和有趣。你可以从同一个工作目录下快速的在几个分支间切换。你很容易发现未被合并的分支,你能简单而快捷的合并这些文件。

4.GIT没有一个全局的版本号,而SVN有:

目前为止这是跟SVN相比GIT缺少的最大的一个特征。你也知道,SVN的版本号实际是任何一个相应时间的源代码快照。我认为它是从CVS进化到SVN的最大的一个突破。

5.GIT的内容完整性要优于SVN:

GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。这里有一个很好的关于GIT内容完整性的讨论 –http://stackoverflow.com/questions/964331/git-file-integrity

git简单的流程:

1.克隆远程代码到本地(通常切换到develop分支)

2.创建忽略文件.gitignore

3.更新本地的代码最新(git pull)

4.根据需求创建本地分支(通常以最新的develop分支为基准)

5.在新创建的分支上完成开发

6.提交开发的功能(git add * + git commit -m '注释' + git push origin 所在的开发分支名称)

7.切换到develop分支,并更新develop分支为最新

8.合并已完成开发的分支过来(git merge 分支名称)

9.如有冲突,解决冲突,并commit

10.推送develop分支的最新变更至远端(git push origin develop)
列子:

需求:增加一个帮助页面

开发:

1.进入本人的虚拟机,并到项目目录下。

2.切换至develop分支,并更新。

3.新建分支help

4.完成开发

5.提交本地更改,并推送至远端。

6.切换值develop分支,并更新。

7.在develop分支下,合并help分支。

8.解决冲突并提交。

9.将develop分支推送至远端。

命令流程示例:

cd /yourPatn/jxc_dev

git status

git checkout develop

git pull

git checkout -b help

#开发示例………………

git add *

git commit -m 'finish help '

git push origin help

git checkout develop

git pull

git merge help

git pull

git push origin develop

 git update-index --skip-worktree  #强制忽略

 git update-index --no-skip-worktree  #取消强制忽略

 git update-index --assume-unchanged  #强制忽略

 git update-index --no-assume-unchanged  #取消强制忽略
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  git