我们为什么要使用git

应用场景分析

1.使用svn,已经开发完一个需求,正在开发第二个需求,但是测试需要你立刻将你完成的第一个需求提交,请问现在你该怎么做:

svn的解决方法大概是这样的:打开提交视图,人为的去分辨哪些是第一个需求的文件,哪些是第二个需求的文件,然后提交第一个需求的相关文件,这种人为的
工作,第一点就是人工的工作容易出现差错,第二就是对人力的浪费

那么如果采用git,我们需要怎么做呢?

git的本地提交,有一个暂存区的概念,每次代码提交的时候提交的是暂存区的代码,你可以再做完第一个需求的,测试通过的情况下,使用命令git add file将已测试通过的代码
保存到暂存区,之后你就可以肆意的开始做第二个需求了,需要提交第一个需求的时候,git commit就ok了.(使用暂存区如果较为繁琐,可以git commit -a全部提交)

2.有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了,怎么办?

svn:

 1. svn update,svn log,找到最新版本(latest revision)
2. 找到自己想要回滚的版本号(rollbak revision)
3. 用svn merge来回滚: svn merge -r : something

git:

git commit --amend,这个命令会将暂存区中的文件提交。 如果自上次提交以来你还未做任何修改(例如,在上次提交后马上执行了此命令),那么快照会保持不变,而你所
修改的只是提交信息。最终你只会有一个提交 - 第二次提交将代替第一次提交的结果。

3.基定版本已经上线(1.0),这个时候在1.0的基础上开发后续的功能,突然测试发现线上版本有BUG需要修复,我们需要怎么办?

svn:

上线的1.0版本已经归入到release分支下,我们的本地开发环境需要保存两套代码,一个trunk目录下的开发版本,一个release目录下的线上版本,假如你现在在做trunk的开
发,突然需要你切换到release代码,通常我们需要手动切换工作空间,人为的切换.

git:

使用git branch testing建立一个开发分支,然后开发,需要你切换到release分支的时候,使用git checkout release命令,切换完毕.

4.现在trunk分支已经开发完毕,测试也都通过了,我们怎么把trunk的代码合并到release分支呢?

svn:

通常有一种很原始的方法,就是trunk所有的修改文件都记录在一个列表里面,然后通过人工的复制粘贴来合并文件,

git:

首先使用git checkout release命令切换到release分支,再使用git merge trunk命令,合并完成.

就以我现在对git浅显的认识,我已经发现了如此之多的好处,那么我们为什么不做一些改变?

git给我印象最深的一个就是分支切换,另一个就是变基了

变基 : 你可以提取在 A分支 中引入的补丁和修改,然后在 B分支 的基础上再应用一次。 在 Git 中,这种操作就叫做 变基。 你可以使用 rebase 命令将提交到某一分支
上的所有修改都移至另一分支上,就好像“重新播放”一样。

觉得git能做的其他的工具也能做到

我们关注到一个新的工具,也意识到这个工具对我们来说是有帮助的,可是还有有很多人对此持怀疑态度,觉得没有作用,或者说git能做的svn也能做,其实这些说法本身没有错,我们用txt文本也能编码,那我们为什么要使用IDE呢,因为IDE能给我们带来方便,能代劳一些重复性的工作,提高我们工作的自动化程序.

觉得大家对这样的工具都不熟悉,学习使用起来麻烦

其实我们用到这样的工具,又不指望能成为git的专家,我们只是使用者,我们需要掌握的命令一共也就十个左右,有同事愿意做先行军,为大家总结使用手册,进行培训,你要做的只是一点点改变,为什么不呢?

觉得提升少,意义不大

有人认为你这样的工具对于我们整个软件开发的过程来说,提升不大,意义不大,我觉得从两方面,来说这个问题,一个是我们现在对工具不熟悉,工具还能带我们多少的惊喜,我们还不清楚,另一个方面,其实就是一句古话了

勿因善小而不为

只要我们承认这个工具能给我们带来好处,那么我们为什么不做呢?就因为觉得一点进步就不是进步吗?

git浅谈的更多相关文章

  1. Git浅谈随笔之---如何工作

    其他的版本控制工具我们常见的还有SVN,关于这两者的区别,我们不多谈,详见 Git 与 SVN 的区别 : Git是一种版本控制工具.用来记录文件内容的变化,备以后查阅某个版本的情况的系统:我们在Gi ...

  2. 浅谈GIT

    浅谈GIT: 牛老师提出的git,于我而言,是一个陌生和新鲜的词汇,在此之前我从未听过git,按照老师的要求,我去搜索了关于git的介绍,有些看懂了,但大部分还是不懂得,在介绍中我了解git其实之前使 ...

  3. 开发工具--浅谈Git

    工具|浅谈Git Git这个工具,是我一直想写文章,终于我实现了我的想法.在我开始写之前,发表一下自己的看法,git只是一个工具,既然已经认定是一个工具,那么一定具备工具这类的共同特征,请用面向对象的 ...

  4. iOS开发之浅谈MVVM的架构设计与团队协作

    今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...

  5. 浅谈Hybrid技术的设计与实现第三弹——落地篇

    前言 接上文:(阅读本文前,建议阅读前两篇文章先) 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 根据之前的介绍,大家对前端与Native的交互应该有一些简单的认识了,很多 ...

  6. 浅谈Hybrid技术的设计与实现第二弹

    前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术的设计与实现第三弹——落地篇 接上文:浅谈Hybrid技术的设计与实现(阅读本文前,建议阅读这个先) ...

  7. 【转载】浅谈游戏开发之2D手游工具

    浅谈游戏开发之2D手游工具 来源:http://www.gameres.com/459713.html 游戏程序 平台类型: iOS Android  程序设计: 其它  编程语言:   引擎/SDK ...

  8. 浅谈iOS视频开发

     浅谈iOS视频开发 这段时间对视频开发进行了一些了解,在这里和大家分享一下我自己觉得学习步骤和资料,希望对那些对视频感兴趣的朋友有些帮助. 一.iOS系统自带播放器 要了解iOS视频开发,首先我们从 ...

  9. 浅谈iOS中MVVM的架构设计与团队协作

    说到架构设计和团队协作,这个对App的开发还是比较重要的.即使作为一个专业的搬砖者,前提是你这砖搬完放在哪?不只是Code有框架,其他的东西都是有框架的,比如桥梁等等神马的~在这儿就不往外扯了.一个好 ...

随机推荐

  1. 目标平台、活动平台 配置,出现未能加载文件或程序集“xxx”或它的某一个依赖项报错

    今天在做动态加载程序集的时候,发现明明程序集存在的情况下,还是依然报“未能加载文件或程序集“xxx”或它的某一个依赖项报错”的错误,排除了程序和配置的错误后,怀疑是否是环境的问题,于是百度加msdn后 ...

  2. Objective-C语法简记

    开始学习iPhone开发了,虽然现在已经有了Swift,但我还是老老实实地学习Objective-C,鄙人入门的程序语言是C,后来学习了C#和Java,现在来学Objective-C,这篇只是一些很简 ...

  3. Android Volley框架的使用(3)

    4. 加载图片 在实际应用中,经常需要从网络上下载并显示图片.Volley也提供了从网络下载图片的几种方法,这里主要介绍两种方法:ImageRequest和ImageLoader. (1) Image ...

  4. Can't install mysql-python version 1.2.5 in Windows

    Can't install mysql-python version 1.2.5 in Windows http://stackoverflow.com/questions/37092125/cant ...

  5. springMVC中使用ajax传递json数组

    解决方法 去www.json.org下载JSON2.js 再调用JSON.stringify(JSONData)将JSON对象转化为JSON串. var people = [{ "UserN ...

  6. No.010:Regular Expression Matching

    问题: Implement regular expression matching with support for '.' and '*'.'.' Matches any single charac ...

  7. 跨平台日志清理工具 Log-Cutter v2.0.1 RC-1 发布

    Log-Cutter 是JessMA开源组织开发的一个简单实用的日志切割清理工具.对于服务器的日常维护来说,日志清理是非常重要的事情,如果残留日志过多则严重浪费磁盘空间同时影响服务的性能.如果用手工方 ...

  8. Hibernate关联映射(单项多对一和一对多、双向一对多)

    最近总是接触着新的知识点来扩展自己的知识面:不停的让自己在原地接触天空的感觉真的很美好!!!革命没有成功,程序员的我们怎么能不努力呢...... 一.用员工和部门来剖析关联映射的原理. 1)从这张截图 ...

  9. linux常用命令之文件权限

    CHGRP chgrp – change group ownership,改变组别的所有权 用法 chgrp 组别名 文件\目录名 选项 -R  (recursive)递归改变,将目录下所有的文件和目 ...

  10. 手动创建VS单元测试,显示代码覆盖率

    Visual Studio 号称有史以来最强大的IDE,确实如此.创建单元测试也是一键完成:在方法的代码块中右键“Create Unit Test…”,勾选测试项,填项目名,完成.VS就会自动帮你创建 ...