git浅谈
我们为什么要使用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浅谈的更多相关文章
- Git浅谈随笔之---如何工作
其他的版本控制工具我们常见的还有SVN,关于这两者的区别,我们不多谈,详见 Git 与 SVN 的区别 : Git是一种版本控制工具.用来记录文件内容的变化,备以后查阅某个版本的情况的系统:我们在Gi ...
- 浅谈GIT
浅谈GIT: 牛老师提出的git,于我而言,是一个陌生和新鲜的词汇,在此之前我从未听过git,按照老师的要求,我去搜索了关于git的介绍,有些看懂了,但大部分还是不懂得,在介绍中我了解git其实之前使 ...
- 开发工具--浅谈Git
工具|浅谈Git Git这个工具,是我一直想写文章,终于我实现了我的想法.在我开始写之前,发表一下自己的看法,git只是一个工具,既然已经认定是一个工具,那么一定具备工具这类的共同特征,请用面向对象的 ...
- iOS开发之浅谈MVVM的架构设计与团队协作
今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...
- 浅谈Hybrid技术的设计与实现第三弹——落地篇
前言 接上文:(阅读本文前,建议阅读前两篇文章先) 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 根据之前的介绍,大家对前端与Native的交互应该有一些简单的认识了,很多 ...
- 浅谈Hybrid技术的设计与实现第二弹
前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术的设计与实现第三弹——落地篇 接上文:浅谈Hybrid技术的设计与实现(阅读本文前,建议阅读这个先) ...
- 【转载】浅谈游戏开发之2D手游工具
浅谈游戏开发之2D手游工具 来源:http://www.gameres.com/459713.html 游戏程序 平台类型: iOS Android 程序设计: 其它 编程语言: 引擎/SDK ...
- 浅谈iOS视频开发
浅谈iOS视频开发 这段时间对视频开发进行了一些了解,在这里和大家分享一下我自己觉得学习步骤和资料,希望对那些对视频感兴趣的朋友有些帮助. 一.iOS系统自带播放器 要了解iOS视频开发,首先我们从 ...
- 浅谈iOS中MVVM的架构设计与团队协作
说到架构设计和团队协作,这个对App的开发还是比较重要的.即使作为一个专业的搬砖者,前提是你这砖搬完放在哪?不只是Code有框架,其他的东西都是有框架的,比如桥梁等等神马的~在这儿就不往外扯了.一个好 ...
随机推荐
- C#实现二叉树的各种遍历
1. 引言 在实际的项目中,树还是用的比较多的一种,尤其是对于具有层次结构的数据.相信很多人都学过树的遍历,比如先序遍历,后序遍历等,利用递归还是很容易理解的. 今天给大家介绍下二叉树的几种遍历算法, ...
- 反编译APK文件
有时源代码丢失了,这时如果有apk文件的话,是可以对apk文件反编译得到源文件的,本文介绍一下简单的反编译apk文件的过程. 1.工具 反编译apk需要的工具有两个:apk2java和apktool, ...
- final static 深度解析
function test(){ var a = b = 10; } test( ); alert(b); 由上一篇博客说起,最后输出的是10.引起歧义的原因是全局变量和局部变量的关系.顺着这个话题, ...
- Scalaz(40)- Free :versioned up,再回顾
在上一篇讨论里我在设计示范例子时遇到了一些麻烦.由于Free Monad可能是一种主流的FP编程规范,所以在进入实质编程之前必须把所有东西都搞清楚.前面遇到的问题主要与scalaz Free的Free ...
- spring入门(二)【加载properties文件】
在开发过程当中需要用到配置信息,这些信息不能进行硬编码,这时配置文件是一个比较好的方式,java提供了properties格式的文件,以键值对的方式保存信息,在读取的时候通过键获得键对应的值,spri ...
- Guava学习笔记:Immutable(不可变)集合
不可变集合,顾名思义就是说集合是不可被修改的.集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变. 为什么要用immutable对象?immutable对象有以下的优点: 1.对不可靠的客 ...
- node.js如何处理请求的路由
var http = require( 'http' ) var handlePaths = [] /** * 初始化路由配置数组 */ function initRotute() { handleP ...
- rabbitmq心跳机制与配置
最近,我们有些在阿里云上的应用总是有客户端出现异常和信息推送不及时的情况,检查mq日志,发现高峰期不停的有心跳超时,如下: =ERROR REPORT==== 21-Dec-2016::12:38:0 ...
- PHP发短信 PEAR 包:Services_Sms
PHP发短信 PEAR 包:Services_Sms 对于这种第三方库,PHP官方称之为PEAR,需要按照PEAR标准开发(标准URI). PEAR的优势:一键安装到php/lib/php目录,req ...
- JavaScript学习笔记-函数实例
函数实例 var p = { a:15, b:'5', f1:function(){ var self = this; console.log(self.a+self.b); f2(); functi ...