`
thecloud
  • 浏览: 885730 次
文章分类
社区版块
存档分类
最新评论

版本控制的极佳实践

 
阅读更多

本文是www.git-tower.com总结的使用Git的最佳实践,其中的大部分实践具有普适性,可用其他版本控制工具SVN,CVS等。  

原文:http://www.git-tower.com/files/cheatsheet/Git_Cheat_Sheet_grey.pdf

"Best Practice of Version Control in Git"

1. 提交相互关联的变化(Commit Related Changes)


每次提交的应该是一系列有关联的变化。例如,修复了两个不同的bug应该分别提交两次。提交的变化少,

其他开发者更容易理解变化的内容,出现问题更容易回滚到原来的状态。  

译者注:假想现在有2个bug,第一次提交时第1个bug修复完毕,第2个bug修复了一半,第二次提交时2个bug修复完毕。

后来发现需要先仅修复第1个bug,因为第一次提交时包含了第1个bug的修复代码与第2个bug的半成品,所以需要恢复到上次

提交状态之外的额外努力,使用版本控制带来的便利就大打折扣了。


2.经常提交(Commit Often)


经常提交可以保证提交的变化少而且相互关联。而且,可以更快地使其他开发者看到最新的代码。这样更容易让所有人快速

合并变化,避免发生冲突。若偶尔提交一次且代码变化较大,将使冲突很难解决。


3.不要提交半成品(Don’t Commit Half-done Work)


不要提交未完成的代码。这并不是要求你完成某个全面、大型的功能的代码后再提交,而是:按逻辑将其分解成多个部分并尽早提交。

不要为了将代码存储到服务器上而在下班前匆忙提交,如果仅仅是为了提交今天的工作内容,尝试使用“git stash”代替”git commit”。


4.提交之前先测试(Test Code Before You Commit)


不要提交你”认为”已经完成的内容。先对改变的代码作详尽的测试并确保所做的改变没有副作用。虽然提交半成品仅仅需要的

是原谅自己,然而向服务器提交测试过的代码再让其他开发者使用更重要。


5.写有用的提交记录(Write Good Commit Message)


先简短地总结对文件所做的改变,插入空行,再写详细内容。详细内容应该提供了以下几个问题的答案:

— 改变的目的?

— 改变后与上次实现的区别?


6.版本控制不是文件备份(Version Control Is Not A Backup System)


将文件备份到服务器上是版本控制工具带来的副产品,但是你不应该把版本控制系统用来备份文件。使用版本控制时,应力求

每次提交的都是相关联的变化(见第一条)——而不是提交一堆文件。

译者注:版本控制的目的是易于追踪文件变化,方便多人协作,实现开发中的工作流(branch, merge, tag...)


7.使用分支(Use Branches)


分支是Git最强大的特性之一——这并非偶然:Git最初的核心目标就是快速简单地建立分支。分支是帮助划分多个开发路线的完美

工具。你应该在开发工作流中广泛应用分支:如增加新功能,修复bug,验证想法...


8.寻求帮助(Help & Documentation)


通过 git help <command>获取git命令的帮助  

Git 官方网站: http://www.git-scm.com  

学习Git资源:

http://progit.org  

http://book.git-scm.org  

http://gitref.org


译者:

Garyelephant

mail:garygaowork#gmail.com

关注软件团队的高效运行,团队管理。



分享到:
评论

相关推荐

    柔性支护在地质构造区围岩控制中的应用实践

    综采工作面过陷落柱等地质构造,传统方法是以上木料接顶辅助支架控制工作面顶板围岩的稳定性,在传统技术工艺基础上探索出...实践表明,该柔性支护技术对综采面过地质构造能表现出极佳的优越性并带来巨大的社会经济效益。

    Visual C++串口通信编程实践

    本书从编程实践的角度详细介绍了Windows环境下和DOS环境下的串口通信的基本方法,并根据当前串口与网络结合发展的...本书是从事串口及网络通信的技术人员和学习者的极佳参考资料,也可以作为数据通信课程的辅助教材。

    visual c++_turbo c串口通信编程实践

    本书从编程实践的角度详细介绍了Windows环境下和DOS环境下的串口通信的基本方法,并根据当前串口与网络结合发展的...本书是从事串口及网络通信的技术人员和学习者的极佳参考资料,也可以作为数据通信课程的辅助教材。

    《Visual C++_Turbo C串口通信编程实践》PDF电子书

    本书从编程实践的角度详细介绍了Windows环境下和DOS环境下的串口通信的基本方法,并根据当前串口与网络结合的发展... 本书是从事串口及网络通信的技术人员和学习者的极佳参考资料,也可以作为数据通信课程的辅助教材。

    【网络安全精品】工控安全应急工作的探索与实践-201700913.rar

    《工控安全应急工作的探索与实践_201700913.rar》是一份深入剖析工业控制系统(ICS)安全领域的重要资料。该文档聚焦于当前工控系统面临的安全威胁,以及在遭受网络攻击或其他安全事件时,如何迅速有效地响应和处理...

    Visual C++_Turbo C 串口通信编程实践.(电子工业.龚建伟.熊光明) 第二版 电子版

    本书是从事串口及网络通信的技术人员和学习者的极佳参考资料,也可以作为数据通信课程的辅助教材。 作者简介 龚建伟,工学博士,目前在北京理工大学从事科研究与教学工作。主要从事计算机控制技术、顺人和智慧能...

    论文研究 - 参数化非线性MPC在PEM燃料电池上的实验评估

    本文提出了一种基于参数化非线性模型的预测控制(NMPC)策略,以解决质子交换膜燃料电池的氧气过量比调节难题。 在实践中,有关NMPC策略... 总体而言,拟议的参数化NMPC控制器似乎是解决氧气过量比调节问题的极佳选择。

    郭屯煤矿动压沿空巷道破坏机理及支护控制

    针对郭屯煤矿1103运输巷受采动影响围岩应力分布和巷道变形不均的问题,提出了预应力让压非对称...设计支护方案极大地改善了原有支护状态,控制了巷道围岩稳定,使应力分布非对称的巷道围岩控制在变形基本对称的范围内。

    c语言c++项目源代码_c语言奔跑的火柴人游戏源码.rar

    无论您是C语言初学者还是资深开发者,这份源代码都将为您提供一个极佳的学习和实践平台。通过学习和掌握这份源代码,您将能够更深入地理解C语言的编程逻辑和游戏开发的基本原理,为您的编程之路打下坚实的基础。

    机器学习的数学基础.docx

    在过去的十年中,机器学习帮助我们自动驾驶汽车,有效的语音识别,有效的网络搜索,并极大地提高了人类基因组的认识。机器学习是当今非常普遍,你可能会使用这一天几十倍而不自知。很多研究者也认为这是最好的人工...

    Servlet与JSP核心编程

    同时,读者还将学会如何控制Web应用生命周期中的主要事件,掌握JSTL最佳实践,了解如何构建自定义标签库。此外,《Servlet与JSP核心编程(第2卷 第2版)》还用较多篇幅深入介绍了Jakarta Struts框架。

    Visual C++_Turbo C 串口通信编程实践.(电子工业.龚建伟.熊光明) 源码光盘

    本书是从事串口及网络通信的技术人员和学习者的极佳参考资料,也可以作为数据通信课程的辅助教材。 作者简介 龚建伟,工学博士,目前在北京理工大学从事科研究与教学工作。主要从事计算机控制技术、顺人和智慧能...

    Android Studio实战 快速、高效地构建Android应用

    ● 如何使用Git进行版本控制 ● 如何使用Gradle ● 如何使用崭新的Android Wear框架 ● 如何使用Android Studio调试代码 ● 如何管理应用项目 ● 如何测试应用 ● 如何分析并重构代码 ● 如何定制Android Studio 

    斯坦福机器学习笔记.zip

    在过去的十年中,机器学习帮助我们自动驾驶汽车,有效的语音识别,有效的网络搜索,并极大地提高了人类基因组的认识。在本课中,将学习最有效的机器学习技术,并获得实践,让它们为自己的工作。更重要的是,不仅得到...

    c语言c++项目源代码_c语言扔香蕉的大猩猩.rar

    **C语言扔香蕉的大猩猩项目** **资源介绍:** 本项目是一个基于C语言的趣味游戏项目,主题为“扔香蕉的大猩猩”...无论是作为学习C语言的项目实践,还是作为娱乐休闲的游戏开发,本项目都将为您提供一个极佳的起点。

    离散控制Matlab代码-coursera_ml_slide:coursera_ml_slide

    在过去的十年中,机器学习为我们提供了自动驾驶汽车,实用的语音识别,有效的网络搜索以及对人类基因组的极大了解。 如今,机器学习无处不在,您可能不知不觉地每天使用数十次。 许多研究人员还认为,这是在人类级AI...

    机器学习个人笔记完整版v5.4.docx

    在过去的十年中,机器学习帮助我们自动驾驶汽车,有效的语音识别,有效的网络搜索,并极大地提高了人类基因组的认识。机器学习是当今非常普遍,你可能会使用这一天几十倍而不自知。很多研究者也认为这是最好的人工...

    Fur企业应用开发框架 v1.0 rc.final.90.zip

    Fur 是 .NET 5 平台下企业应用开发最佳实践框架。 特点: 全新面貌:基于 .NET 5 平台,没有历史包袱 极易入门:只需要一个 Inject() 即可完成配置 极速开发:内置丰富的企业应用开发功能 极少依赖:框架只依赖三个...

    19.流量控制与熔断利器:Sentinel介绍_V20240120.pdf

    技术专题篇(第11~18章)介绍了一些支付系统领域内非常实用的最佳实践,这些技术还可以应用到非支付系统设计中。 书中通过采用大量手绘风格的图示来讲解专业领域的概念和设计思路,让大家更容易阅读和理解,达到“一...

Global site tag (gtag.js) - Google Analytics