您的位置:首页 > 其它

Git 入门知识(与SVN对比)

2018-02-27 16:57 447 查看
目前我们遇到的问题有三个:
1. 将项目代码从svn迁移到git(一个项目只需要一个人做就可以了)
2. Git的安装与配置。(从一台没有安装过git的机器,到我们可以使用。每个人只需要配置一次。)
3. 就是我们使用git管理我们的代码。(重点) Git简单介绍:git是一款免费的、开源的分布式版本管理控制系统(工具)。和SVN一样,都是管理我们代码文档用的。 Git比SVN相比有什么区别呢?1. 最核心的区别就是Git是分布式的, SVN是集中式的。SVN必须有一个服务器版本库就放在一个中央服务器。所有开发人员都是与服务器进行交互的。(一般的开发流程就是干活时候从中央服务器得到最新的版本,然后干活,干完后需药把自己做的工作推送到中央服务器。)Git不需要有中心服务器,我们每台电脑拥有的东西都是一样的。我们使用Git并且有个中心服务器,仅仅是为了方便交换大家的修改,但是这个服务器的地位和我们每个人的PC是一样的。我们可以把它当做一个开发者的pc就可以就是为了大家代码容易交流不关机用的。没有它大家一样可以工作,只不过“交换”修改不方便而已。(所以git的开发流程是工作的时候不需要联网了,因为版本库就在你的电脑上。比如你在自己的电脑上修改了文件A,你同事也在她的电脑上修改了文件A,这时,你们之间只需要把自己的修改推送给对方。就可以看到了对方的修改了。)Git更倾向于分布式开发,每台计算机上都有一个完整的本地版本库。和服务器上的一模一样。去中心化有什么好处呢?1.1操作处理速度快。在Git中的绝大多数操作都是访问的本地文件和资源,不必联网就可以看到所有的历史版本记录,所以,处理起来速度也是飞快的。而SVN必须联网从中心服务器上下载下来数据才可以看到。 1.3 安全性更高。因为每个人的电脑都有完整的版本库,所以某一个电脑坏掉了不要紧,随便从其他人哪里复制一个就可以了。而SVN集中式版本控制的中央服务器要是出了问题,所有人都没法干活了。 1.2 不依赖网络。SVN断开网络就没有commit代码。但是Git可以先Commit到本地仓库。使用SVN在没有网络的情况下,当然可以继续本地开发,但是不能commit代码,长时间不commit代码会丢失大量的开发进程的历史记录。有个比喻:不能commit代码就像word中不能save一样危险。所以我们在使用git开发过程中,commit一定要频繁,速度很快,又能记录你的改动。如果一天commit一次,那么中间的修改,就再找不回来了。(svn的commit速度慢,但git是提交到本地,几乎不占用时间。) 说到这里,我们就先说一下svn和git的commit的不同。在SVN中当你提交代码时候,它将直接记录到(同步)中心版本库,当你发现你的代码有严重的问题是,你已经无法阻止事情的发生了。在git 中完全不是这样的,commit相当于你将你的代码提交到本地的版本库里了,只需“推”到(git push)主要的版本库即可。相当于commit提交到本地,然后push其实执行的同步(Sync)操作。两步操作。不至于马上影响到所有的开发人员。 

就算没有网络也可以进行,Commit,查看历史记录,创建分支,合并等操作,等到网络再次连接上就Push到Server端。 2. 分支功能:Svn 创建分支,其实就是创建了一个新的文件夹(目录)并拥有实际的文件的。相当于拷贝了一份源文件。如果一个成员创建了一个分支,将会影响所有的人。那么所有的人都将拥有同样的分支。Git创建分支,并没有创建文件夹,你甚至看不到任何的改变。用户可以在同一个文件夹中,快速的切换不同的分支。创建一个分支,就是多了一个索引文件,记录这个分支的变化。占用很小的空间。每个分支,都是独立的,在这个分支里想做什么都可以,对其他分支没有一点影响。既然这样,大家就应该能想象得到。一个svn项目创建了几个分支,就相当于把源码复制拷贝了多少次。而git项目创建几个分支,仅仅是多了几个索引,占用很小的空间。所以在git管理项目中,我们可以创建任意多的分支,(开支小)。所以,clone新的项目的时候,git也比svn项目快的太多了。3. Git具开发代码审核功能,各个成员请求将自己的分支合并到主分支上。管理人员对认为不符合规范的代码,会拒绝合并到主分支。保证整体代码的规范与安全。Git工作流程


那我们说过工作流了,就具体务实一点,我们具体该怎么做。1. 安装配置好git(就是发给大家的资料,大家按照一般就是没问题的)2. 在你的pc上的任意位置,运行git clone url命令,将远程版本库下载到本地。这样你本地就拥有了和中心服务器一样的本库。3. 日常会碰到的场景


3.1创建了一个新文件,需要添加到版本库里使用git add filename命令,我想保存一下,使用git commit -m ..... 我想把我改变的推送给其他人(服务器)git push -u origin master(提交代码)。3.2我想把别人改变的代码拉去过来,git pull.3.3原来的有个文件,想删除了,使用git rm file(会将文件从暂存区与磁盘上删除)3.43.5我已经将更改的内容提交到暂存区了,但是我发现提交的代码有问题,想恢复做出修改之前的样子git reset HEAD(取消缓存区的内容)4. 新收到一个任务,我想创建一个分支(后续更新)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Git Svn 对比 入门