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有框架,其他的东西都是有框架的,比如桥梁等等神马的~在这儿就不往外扯了.一个好 ...
随机推荐
- python sqlite中通过字段名获取查询结果
在连sqlite数据库时,用fetchall()查询结果,是用row[0],row[1]这样的方式来打印每列的结果 但是我想用row[“字段名”]方式查询怎么办? import sqlite3 con ...
- 关于在Servelet中如何获取当前时间的操作
//获取到当前时间 Date date=new Date(); DateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss&quo ...
- 疯狂Android讲义 - 学习笔记(一)
常用开发工具的用法 android : 启动Android SDK管理器 android --help 查看具体用法 android create avd -n t10 -t 10 -b armea ...
- MultiLine Text光标停留在第一行
MultiLine Text是多行文本,默认设置下,光标是停留在控件中间的,很不好看. 解决的方法是设置属性android:gravity="top",这样光标就会停留在第一行.
- Dubbo入门
早就听说了dubbo的好处,但是在项目中一直没有使用的机会,所以一直不知道怎么使用.今天晚上有空,简单的学习一下 就当入个门,以后项目中遇到的话,那么使用起来就比较简单了,至于介绍的话,我就不总结了, ...
- mysql 增、删、改、查 、函数、执行次序
这些是最基础的部分,若果这些不能满足你的需求,可以到http://www.w3school.com.cn中查询 增删改: 增 insert into<表名>(<列名列表>(如果 ...
- PMP47个过程的ITO
- LGLTagsView
做项目的时候经常会用到标签,比如说现在很多项目中搜索历史用标签展示 和 选择某个产品的不同属性用标签展示....网上的有很多封装好的标签,但是作为一个上进的程序员,都希望能有一个自己写的.其实也是一种 ...
- 2005年IT行业趋势Top10
未来三年内对组织有潜在的重大影响IT趋势.这里的IT趋势的摘要: 1. 计算位于任何地方 智能手机,平板,电视盒,可穿戴设备,可连接的屏幕,对于适应移动用户所求要的整体环境的需求在不断增强.这会继续提 ...
- web性能优化——代理(nginx)
简介 一个很好的原则是调优时每次只个性一个配置.如果对配置的个性不能提高性能的话,改回默认值 优化必须要通过性能测试.不能意淫,需要前后对比,真实说明问题. 场景 优化nginx. 确保每次请求控制一 ...