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有框架,其他的东西都是有框架的,比如桥梁等等神马的~在这儿就不往外扯了.一个好 ...
随机推荐
- 自己对Debug的一些感悟
A.13-03-06记. 1.当项目中发现bug的时候,首先考虑如何重现,能够重现的bug比较好找寻根源. 2.思考下以前是否发现过类似bug,是否由一些外部配置所决定. 3.有循环时候注意临界条件.
- C#身份证识别相关技术
最近研究C#相关的OCR技术,图像识别一般C和C++这种底层语言做的比较多,C#主要是依托一些封装好的组件进行调用,这里介绍三种身份证识别的方法. 一:调用大公司API接口,百度.云脉,文通科技都有相 ...
- qt 自动产生 Guid 方法
strcpy(cmd->uid,QUuid::createUuid().toString().toStdString().c_str());
- SignalR入门之从外部访问持久性连接或Hub
有的时候,需要从外部访问持久性连接或Hub服务. 比如,假设A和B两个客户端正在聊天,那么系统或第三方在不参与聊天的情况需要为他们发送系统消息,那么此时,就需要独立来访问持久性连接或Hub服务. 之前 ...
- Exception raised during rendering: java.lang.System.arraycopy([CI[CII)V
最近下载一个新版本的adt-bundle,Android API是20. 把Plain Text控件往布局上面拖时,发现拖不上去,出现了下面的错误: Exception raised during r ...
- 2015暑假多校联合---Expression(区间DP)
题目链接 http://acm.split.hdu.edu.cn/showproblem.php?pid=5396 Problem Description Teacher Mai has n numb ...
- Linux命令详解之—less命令
Linux下还有一个与more命令非常类似的命令--less命令,相比于more命令,less命令更加灵活强大一些,今天就给大家介绍下Linux下的less命令. 更多Linux命令详情请看:Linu ...
- 窗口之间的主从关系与Z-Order
说明:这是本人2008年写的一篇旧文,从未公开发表过.其中除了一小段描述Window Mobile平台的内容已过时,大部分内容对于从事Win32开发的程序员还是很有参考价值的,也是对自己从事Windo ...
- 从源码角度理清memcache缓存服务
memcache作为缓存服务器,用来提高性能,大部分互联网公司都在使用. 前言 文章的阅读的对象是中高级开发人员.系统架构师. 本篇文章,不是侧重对memcache的基础知识的总结,比如se ...
- CentOS 6.6 新安装系统的网络IP配置
实例环境 虚拟机:VMware 11.1.0 系统:CentOS 6.6 # ifconfig -a << 查看所有网卡的状态 2. # vi /etc/sysconfig/n ...