现如今,应该每个开发者都在使用版本控制工具了吧。然而,如果你理解版本控制的基本规则,你便能更好地发挥它的效用。在此,我们汇总了一些最佳实践,希望你在使用Git做版本控制时能够了然于心、得心应手。

1.  相关的改动才放一起提交

一次提交(git commit)应该只包含相关的改动。比如说,修复两个不同的bug就应该分开来做两次提交。提交的改动越小(或越少),其他开发者理解起来就越容易;如果改动有问题,退回去也比较方便。Git有一个暂存区域(staging area)的概念,它还允许你暂存文件的某些部分,这更便于你创建非常细粒度的提交。

2.  经常性地提交

经常提交势必让你每次提交的东西都很少,也有助于你只提交相关的改动。并且,你还能更频繁地与别人共享代码。通过这种方式,所有人在集成代码时都会感觉更轻松,也就能避免一些不必要的冲突。相比之下,如果每次提交的东西很多、改动很大、时间间隔很长,那么在代码合并(merge)过程中产生的冲突就很难解决了。

3.  别提交半成品

你应该只在完工之后才提交。这并不是逼你把一个大块头功能完整实现好之后再提交。恰恰相反!你应该把大功能的实现分解成合乎逻辑的小块工作,并且记住要早一些、经常性地提交你的代码。只是要切忌为了提交而提交,比如在下班离开公司之前把一些东西仓促放入仓库中。如果你这么做只是为了从服务器抓取一份干净的代码(git checkout <branch>或者git pull),可以考虑使用Git的“Stash”功能。

4.  提交之前必须测试

你“认为”已经完工了,然后就可以提交了吗?千万要抵得住这种诱惑!你应该进行全面的测试,以确保你真的是“完工”了,并且(在你能够识别的范围内)没有副作用。尽管将半成品提交到本地仓库不伤大雅(原谅你的庸人自扰),但当你把代码推送(git push)到服务器与别人共享时,这个问题就大了——在这之前,请务必测试你的代码!

5.  提交时须带上适当的描述

在描述的开头部分,你应该简单总结一下你所做的改动(别超过50个字)。然后,用一个空行将开头与主体部分隔离开来。在主体部分,你应该详细回答这些问题:为什么要做这次改动?跟以前的实现有什么不一样?请使用祈使语气和现在时态(比如,要使用“change”这个单词,而不用使用“changed”或“changes”),为的是与像git merge这样的命令自动产生的描述保持一致。

6.  版本控制有别于备份系统

把你的文件备份到远程的服务器上是版本控制系统的一个不错的副作用。但是,你不应该只把版本控制当备份系统来使用。版本控制追求的是每次提交的意义(请回过去阅读第一条:把相关的改动放在一次提交里)——你不应该填鸭式地塞入一堆毫不相干的文件。

7.  使用分支

分支是Git最强大的功能之一。这并不是偶然的——从一开始,简单、快速创建分支的能力就是对Git的一个核心需求。使用分支能够有效地避免不同开发工作之间的相关干扰。你应该在开发过程中广泛使用分支,它可以用于开发新功能、修复bug、试验新的想法……

8.  采用一致的工作流程

Git允许你采纳很多种不同的工作流程:持久存在的分支、主题分支、合并或复位、Gitflow(点我!)……你到底应该选择哪一种呢?这取决于几个因素:你的项目,开发与部署的整体流程,还有(可能是最重要的)就是大家的个人偏好。不管你们选择哪种工作流程,请确保团队中的每个人都对工作流程有相同的理解并且严格遵循。

原文链接:http://www.git-tower.com/learn/version-control-best-practices.html

版本控制之最佳实践(Git版)的更多相关文章

  1. [转载]理解 Git 分支管理最佳实践

    原文 理解 Git 分支管理最佳实践 Git 分支有哪些 在进行分支管理讲解之前,我们先来对分支进行一个简单的分类,并明确每一类分支的用途. 分支分类 根据生命周期区分 主分支:master,deve ...

  2. mybatis 3.x源码深度解析与最佳实践(最完整原创)

    mybatis 3.x源码深度解析与最佳实践 1 环境准备 1.1 mybatis介绍以及框架源码的学习目标 1.2 本系列源码解析的方式 1.3 环境搭建 1.4 从Hello World开始 2 ...

  3. Android学习之基础知识七—碎片的最佳实践

    一.Android碎片(Fragment)的最佳实践——简易版新闻应用 第一步:新建FragmentBestPractice项目,在app/build.gradle当中添加:RecyclerView ...

  4. Gerrit常见命令及最佳实践

    概述 本文记录了笔者在使用Gerrit(一种免费.开放源代码的代码审查软件)过程中的一些微小的经验,在这里做个简单的分享. 克隆工程 git clone ssh://tusi@xx.xx.cn:294 ...

  5. 应用Git Flow—Git团队协作最佳实践

    规范的Git使用 Git是一个很好的版本管理工具,不过相比于传统的版本管理工具,学习成本比较高. 实际开发中,如果团队成员比较多,开发迭代频繁,对Git的应用比较混乱,会产生很多不必要的冲突或者代码丢 ...

  6. Git Flow——Git团队协作最佳实践

    规范的Git使用 Git是一个很好的版本管理工具,不过相比于传统的版本管理工具,学习成本比较高. 实际开发中,如果团队成员比较多,开发迭代频繁,对Git的应用比较混乱,会产生很多不必要的冲突或者代码丢 ...

  7. CI Weekly #18 | flow.ci iOS 最佳实践出炉,正式支持 Git@OSC 构建

    如大家所期待,flow.ci 现已支持开源中国的代码仓库 - 码云,可以直接构建 Git@OSC 的项目了,点击创建项目-选择代码仓库-选择码云-绑定 OSChina 账户-选择要构建项目,教程看这里 ...

  8. 干货:基于 Git Flow 的 Git 最佳实践(附加解决大家经常碰到的问题)

    突然想写这一篇Git的使用心得,主要有几个原因,其一是自己使用Git也有快3年时间了,其间自己经历过一些坑,也有迷茫的时候,在呆过的大大小小的团队中,其实每个人也都并不是Git专家,很多对于流程以及G ...

  9. Git 最佳实践:分支管理

    5月份,为统一团队git分支管理规范,刚开始准备自己写,在网上搜了下,发现不少不错的git分支管理实践.最后我为团队选择了这个git分支管理实践 A successful Git branching ...

随机推荐

  1. JVM常见问题 一(转载)

    1. 内存模型以及分区 JVM内存模型如下图所示: 此处我们集中注意中间绿色的部分,该部分为JVM的运行时内存,该部分包含了: 线程私有的(灰色): 程序计数器:记录执行到第几条指令 虚拟机方法栈:执 ...

  2. Template Method 模板设计模式

    什么是模板设计模式 对于不了解的模板设计模式的来说,可以认为如同古代的造纸术一样,纸所以成型,取决于用了模板的形状,形状又由镂空的木板组成,而你想要造什么纸,又取决于你使用什么材料. 上面提到了两个关 ...

  3. python if判断语句&计算

    python对缩进要求严格,代码块里的缩进必须一样,可以常用 tab键  表示4个空格 if 条件: 代码块 else: if判断语句如下: 1 print("吃饭,喝水,回家") ...

  4. Go 语言数据类型

    在 Go 编程语言中,数据类型用于声明函数和变量. 数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存. Go 语言按类别有以下几种 ...

  5. 在web应用中使用Log4j 2

    Using Log4j 2 inWeb Applications (在web应用中使用Log4j 2) 来源:http://logging.apache.org/log4j/2.x/manual/we ...

  6. TCP发送源码学习(2)--tcp_write_xmit

    一.tcp_write_xmit()将发送队列上的SBK发送出去,返回值为0表示发送成功.函数执行过程如下:1.检测拥塞窗口的大小.2.检测当前报文是否完全处在发送窗口内.3.检测报文是否使用nagl ...

  7. WmS简介(三)之Activity窗口是如何创建的?基于Android7.0源码

    OK,在前面两篇博客中我们分别介绍了WmS中的token,同时也向小伙伴们区分了Window和窗口的区别,并且按照type值的不同将Android系统中的窗口分为了三大类,那么本篇博客我们就来看看应用 ...

  8. 理解性能的奥秘——应用程序中慢,SSMS中快(2)——SQL Server如何编译存储过程

    本文属于<理解性能的奥秘--应用程序中慢,SSMS中快>系列 接上文:理解性能的奥秘--应用程序中慢,SSMS中快(1)--简介 本文介绍SQL Server如何编译存储过程并使用计划缓存 ...

  9. LibVLC自定义插件目录,获取FPS方法

    一.自定义插件目录 在Windows平台,使用LibVLC,只需要在VLC官网的nightly builds下载最新的win32 debug或win64 debug包, 解压缩之后,会有libvlc. ...

  10. Android监听屏幕解锁和判断屏幕状态

    开发后台服务的时候经常需要对屏幕状态进行判断,如果是想要监听屏幕解锁事件,可以在配置里面注册action为 android.intent.action.USER_PRESENT的广播,则可以监听解锁事 ...