使用 Git 改进工作方式
为什么80%的码农都做不了架构师?>>>
一、什么是 Git
请自行 google
二、Git 与 SVN
http://www.jianshu.com/p/bfec042349ca 这里说的都是对的
但是在实际工作中,分支即是 Git 与 SVN 没有区别又是与 SVN 区别最大的部分,说它没有区别是因为 SVN 也有分支,说它有区别是因为使用 Git 可以把分支的特性充分发挥而不需要花费太高成本(时间),而 SVN 的分支在实际工作中却不是那么多人愿意去用的。
另一个有用的区别是分布式,Git 会在本地建立完事的版本库(Local Reposity),这对混合使用 VCS 非常有帮助,你可以按照自己的想法来管理版本,建立 Git 库的成本却只有一句命令
git init
而后只需要保持其中一个分支与团队中使用的版本库同步即可。
三、接受 Git 的理念
3.1 提交=完成一小件事
首先,Git 的提交与 SVN 相比,它更鼓励一次提交所有变更,而 SVN 可以比较方便地选择性提交或更新部分代码到最新版本,见到过很多开发都喜欢这么干,以保持代码在本地能够正常运行,但这么做的缺点也显而易见,一是容易遗漏,不管是 commit 或 update,一旦遗漏就可能出现莫名其秒的问题,最后,噢,我怎么把 XXX 提交上去/更新了。
其次,默认情况下,Git 强制在提交时填写提交说明,而 Svn 可以什么都不写(出问题,你猜呀!),我也用过 SVN,在使用 SVN 的那段岁月也曾不写任何提交说明,为什么不写?不是不想写,是不知道有什么好写的,因为很多时候,提交涉及的变更可能只是某个/多个功能点改进的一部分,都不知道该怎么描述或者要描述清楚得写一大堆,谁有这功夫,干脆不写最方便。
代码的变更,都是有目的的,如果我们能够把每次代码变更的目的想清楚,那是不是就可以根据变更目的来填写提交说明?
Bingo,改进工作方式第一点:Coding 前想清楚目的(为了改#88号 Bug,为了增加 xxxAPI等)。让每一次 commit 有意义,而不是把 commit 变成下班打卡。
3.2 合并=一系列事情的集合=一次有用的变更
VCS 的目的是记录变更,便于后期追溯问题,但如果某次变更涉及的文件或变更内容过多,这将增加问题追溯的困难,那么如何才能更好地追溯问题呢?
控制粒度。为达到变更目的,并不一定都是非常简单的变更,变更可能会涉及多个方面,比如增加一个新功能时,可能涉及到服务端 service、dao 开发、页面功能开发,可以把其中一小件事作为一次提交,而多个提交处于同一个分支,在所有变更完成后再把分支全部合并到与团队同步的分支上,表示完成某一件事情(业务)。
3.3 分支=隔离变更
隔离:不同分支可以按照自己的目标发展,而不需要关心其他分支的变更所产生的影响。举个例子:当你正在为增加某一个功能点而噼里啪啦敲击着代码时,突然测试妹子跑来跟你说某 bug 调皮捣蛋了,你得马上管管。没有分支怎么办?写了一半的代码是提交还是不提交?有 SVN 玩得溜的同学:嘿,你让一让,写了一半的代码当然不能提交,先看一下线上变更情况,再选择性地更新部分代码,然后改完 bug,再选择性地提交只与 bug 相关的代码,搞定!OMG,这也行?还真行,就是比较费脑子,本来 VCS 该干的活全让这位同学给干了。换成分支会是什么情况?
git add .
git ci -am 'Template commit' #use git ci --amend fix template commit
git co master #any problem branch
#fix problem
git add .
git ci -am 'Fixes #88'
git co feature-yourbranch
#continue coding...
别看这么一堆代码,想要表达的意思很简单:切换到问题分支,改完提交,再换回当前分支继续之前的代码。
切换:隔离会带来什么样的情景?某分支用来开发新功能,某分支用来修复某个 Bug,某分支用来与别人同步协作,隔离带来的好处不言而寓,切换就是实现这些隔离的切换,为什么要提切换呢?因为真的很重要,也真的很方便
git co 目标分支
所以,代码变更,切个分支,养成好习惯
四、分支管理策略
http://blog.jobbole.com/23398/
http://kb.cnblogs.com/page/132209/
核心是理解下面这个图:
每个分支都是有意义的(某个里程碑版本、某个 BUG 修复的版本),没有分支,我们会忽略某些重要的提交
五、一些可以让你事半功倍的配置(如果你只对 GUI 感兴趣,请略过)
1. 简化 git 命令
git config --global alias.lol "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" #git lol --all 看效果
git config --global alias.st status #git st -s
git config --global alias.ci commit #git ci -am 'commit.'
git config --global alias.df diff #git df
git config --global alias.co checkout #git co master
git config --global alias.br branch #git br -av
2. 简化 shell 命令
http://man.linuxde.net/alias
alias gst="git st -s "
alias gad="git add . "
alias gbr="git br -av"
alias glog="git lol --all"
alias gup="git remote update"
#你懂的
六、总结
Git 不仅仅是个版本管理工具,理解 Git,掌握 Git,让 Git 帮助减少问题的产生,提高生产效率。
相关连接:
话说Svn与Git的区别(以后别再问我了):http://www.jianshu.com/p/bfec042349ca
阮一峰:Git分支管理策略:http://blog.jobbole.com/23398/
GIT分支管理是一门艺术:http://kb.cnblogs.com/page/132209/
Alias 命令:http://man.linuxde.net/alias
转载于:https://my.oschina.net/mays/blog/665416
使用 Git 改进工作方式相关推荐
- Git中的merge命令实现和工作方式
想象一下有如下情形:代码库中存在两个分支,并且每个分支都进行了修改,最后你想要将其中的一个分支合并到其他的分支中.个人博客网址 http://swinghu.github.com/ 那么要问合并的处理 ...
- GIT--改变使用 Git 工作方式的七个技巧
这些有用的技巧将改变你使用这个流行的版本控制系统的工作方式. Git 是目前最常见的版本控制系统之一,无论是私有系统还是公开托管的网站,都在使用它进行各种开发工作.但无论我对 Git 的使用有多熟练, ...
- 超越Android:Kotlin在后端的工作方式
by Adam Arold 亚当·阿罗德(Adam Arold) 超越Android:Kotlin在后端的工作方式 (Going Beyond Android: how Kotlin works on ...
- Git的工作流程简介
目录 Git的工作区域 Git的基本流程 1.将工作区的代码添加到暂存区 2.将暂存区的文件提交到本地仓库 3.将暂存区的文件提交到远程仓库 Git的工作区域 Git的基本流程 图形化方式操作 命令行 ...
- 关于对于工作方式的一些总结。
对于最近做的北京NTT项目的总结 最近做了一个北京的项目,虽说寄存不是很好(其实是非常不好),而且没有原来的式样.这次开发时的式样写的 也不是很细.但是我觉得,通过这个项目让我学习到了很多东西! 首先 ...
- CLIP改进工作串讲(上)
CLIP改进工作串讲(上) 本文为 CLIP 改进工作串讲(上)[论文精读] 的学习笔记. CLIP 改进方向 语义分割 Lseg.GroupViT 目标检测 ViLD.GLIP v1/v2 视频理解 ...
- 李沐论文精读系列四:CLIP和改进工作串讲(LSeg、GroupViT、VLiD、 GLIPv1、 GLIPv2、CLIPasso)
文章目录 一.CLIP 1.1 简介 1.1.1 前言 1.1.2 模型结构 1.1.3 模型效果 1.1.3.1 对自然分布偏移的鲁棒性 1.1.3.2 StyleCLIP 1.1.3.3 CLIP ...
- macOS 更新后 Git 无法工作(xcrun: 错误:无效的活动开发者路径 (/Library/Developer/CommandLineTools)
问: 我更新到 macOS Mojave(这也发生在 Catalina 更新中,并且似乎可能发生在此后的每次重大更新中) 今天早上,我在 MacBook Pro 的命令行中导航到我工作的代码库,在存储 ...
- CLIP 改进工作串讲(下)
CLIP 改进工作串讲(下) 本文为 CLIP 改进工作串讲(下)[论文精读] 的学习笔记. 图像生成 最近一年图像生成领域扩散模型大火,尤其是文本生成图像,DALL-E.imagen 等工作层出不穷 ...
最新文章
- Pliops XDP(Extreme Data Processor)数据库存储设计的新型加速硬件
- Oracle 11g 数据类型
- Windows(64位IIS)未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序
- linux 下查看log实时输出
- 如何将dtb反编译成dts
- vs如何写多线程_java中的多线程的示例
- eclipse连接MySQL
- ICCV2021-PiT-池化操作不是CNN的专属,ViT说:“我也可以”;南大提出池化视觉Transformer(PiT)...
- event对象在IE和firefox下兼容写法
- FISCO BCOS 区块链交易流程 区块
- python和vb编程哪个好_自学编程是从python还是从vb好
- Json转对象 调用toBean
- linux安装vim不成功,centos安装vim失败解决
- 理论知识:电感感应电压公式,纯电感正弦电路感应电压公式,纯电容正弦电路电流公式的推导
- 计算机桌面图标右上角出现双箭头符号,电脑桌面图标有箭头怎么办 电脑桌面图片箭头去掉方法【图文】...
- PS打造唯美冷色调照片
- SSM框架搭建,及遇到的问题
- 《计算机视觉与图像处理》最全总结之就业必备-小白易懂易上手
- Doom Emacs入门:通过Doom Emacs框架搭建一个基本的Python开发环境及其基本操作
- ROS-3DSLAM(十六)lvi-sam项目总结