版本管理之gitlab实践教程 基础篇 3

comment是版本管理中非常重要的内容,尤其是在经年累月的大型项目中,铁打的项目,流水的SE,哪怕只言片语的留下,对后来者问题的对应很多时候都能起到重要作用,这篇文章用来讲解git中如何进行comment的管理.

为什么需要comment

为什么需要comment,理由有很多:规范,可读,可维护,bug分析等等。很多人可能在新入一个大型项目时候进行原因调查时候都有很多障碍,尤其是业务不清晰,然后再加上经年累月的bug修改,导致目前的代码已经面目全非的可能性很多,如果有点comment,那就是绝望之中的一根稻草,自然十分重要。

以前曾经碰到过一个很有趣的case,逻辑判断的==被写成了=,这样就变成恒真的一个判断了,跟删除无异,本来准备修改,无意之中发现此行是刻意被修改的,而且提交了一行comment,内容大概是"bug fix",这么难解的comment虽然让人望而却步,但是总提供了一点信息:这是不可以随便修改的,要么把此行删除,要么别动它。

comment使用实践

好记性不如烂笔头,大型项目中comment最好要跟redmine/trac/bugzero等工具结合起来,不同的项目一般都有自己的规范,比如:

项目 说明
原则1 提供bug追踪工具中此次修改的详细信息的Ticket号,以确认更详细信息
原则2 同时将简单将修改原因的重点信息列出,便于确认
原则3 尽量1行之内,便于整体确认

以下将通过实际的例子操作来展示如何进行comment的管理。

当前状态

使用上篇文章创建的分支,因为其中已经有若干commit附带若干comment

[root@ku8-1 demoprj]# git branch
* fea-restapi
  master
[root@ku8-1 demoprj]# git log --oneline
6e990e6 create another rest api list
57c2f6a create rest api list
bc390f0 Another new files in Master
c2ce58b New file added in Master
23c9620 Merge branch ‘develop‘
4b76d48 for branch
70dfd04 initial
[root@ku8-1 demoprj]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

comment管理

其实这仍然是rebase命令的延续,使用rebase -i HEAD~n就可以将最近修改的comment选中进行管理。

操作说明

目前这方面的操作仍然不是很人性化,进入到编辑器之后可以引发的执行子命令有如下六条

项目 说明
pick 用于显示选中,不做任何修改;
reword 仅仅用于修改提交注释信息;
edit 修改提交的文件,做增补提交;
squash 将该条提交合并到上一条提交,提交注释也一并合并;
fixup 将该条提交合并到上一条提交,废弃该条提交的注释;
exec 执行一条命令

reword操作

reword操作用于修改以前不合适的注视太合适不过了,比如我们将"create another rest api list"的注释修改为:”T10100: create another rest api list: person/list”, 将bug追踪工具的Ticket号与之进行结合,并能从comment中看出大体信息。

修改对象行前的命令

将欲修改的所在行的pick改为reword,表明要对此行进行comment的修正动作

保存退出后进入另外一个编辑界面,在此界面中可以真正的修改想要修改的注释:

保存退出

[[email protected]1 demoprj]# git rebase -i HEAD~2
[detached HEAD 4ffee47] T10100:create another rest api list: person/list
 1 file changed, 1 insertion(+)
 create mode 100644 restapi-list-2
Successfully rebased and updated refs/heads/fea-restapi.
[[email protected]1 demoprj]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

push操作

[root@ku8-1 demoprj]# git push origin fea-restapi -f
Counting objects: 7, done.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (6/6), 641 bytes | 0 bytes/s, done.
Total 6 (delta 1), reused 0 (delta 0)
remote:
remote: Create merge request for fea-restapi:
remote:   http://e5091e18d568/root/demoprj/merge_requests/new?merge_request%5Bsource_branch%5D=fea-restapi
remote:
To git@172.17.0.2:root/demoprj.git
 + 6e990e6...4ffee47 fea-restapi -> fea-restapi (forced update)
[root@ku8-1 demoprj]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

结果确认

在gitlab上可以看到comment已然改变

总结

这篇文章介绍了如何在git中进行comment的管理,comment对于项目也恰似那不可或缺的一块小小的拼图,在软件开发日益进步的今天,细节的完善和掌控已经是越来越重要。

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

原文地址:https://www.cnblogs.com/firsttry/p/10294998.html

时间: 2024-10-13 23:11:36

版本管理之gitlab实践教程 基础篇 3的相关文章

版本管理之gitlab实践教程:基础篇

这篇文章主要介绍一下gitlab中如何进行邮件的配置,并使用163邮箱进行验证. 设定文件 可以通过直接设定环境变量或者修正gitlab.rb的方式来设定,本文使用直接设定gitlab.rb文件方式. 设定文件 所在目录 gitlab.rb /etc/gitlab 修改内容 修改如下内容(对应的xx相关内容使用自己的邮箱地址,注意邮箱此处需要一致) gitlab_rails['gitlab_email_from'] = '[email protected]' gitlab_rails['smtp

持续集成之jenkins实践教程 基础篇 4 集成redmine

作为持续集成的利器Jenkins已经得到了广泛地应用,仅仅作为一个工具,Jenkins已然了了自己的生态圈,支持其的plugin更是超过1300+.在实际中如何使用以及如何更好地使用jenkins,一直是大家在实践并讨论的.本系列文章将会从如何使用jenkins方面对一些细节进行总结和整理,这篇文章将会介绍如何在Jenkins中实现与redmine的集成 事前准备 只要有jenkins即可,没有的可以使用Jenkins官方的镜像或者安装包,或者使用Easypack中封装的基本一致的Jenkins

3.高并发教程-基础篇-之分布式全文搜索引擎elasticsearch的搭建

高并发教程-基础篇-之分布式全文搜索引擎elasticsearch的搭建 如果大家看了我的上一篇<2.高并发教程-基础篇-之nginx+mysql实现负载均衡和读写分离>文章,如果能很好的利用,那么其实已经可以轻松日抗千万级别的访问量了,但是如果业务涉及查询比较多,查询条件比较丰富,又或者我就想要查询的响应更快点,那么在mysql上面去做优化,其实比较辛苦,有没有更好的解决方案呢?答案是肯定的!它就是我们今天的主角,分布式全文搜索引擎elasticsearch. 技巧提示:mysql集群层主要

小程序Kbone开发教程基础篇02-使用kbone-ui实现一个按钮

前言 本节我们学习使用kbone-ui框架的使用,kbone-ui是微信推出的支持小程序和Vue框架的多端UI库,我们首先完成Button的使用. 一.基础知识 1.kbone-ui简介 kbone-ui 是一个能同时支持 小程序(kbone) 和 vue 框架开发的多端 UI 库.kbone 框架是用来对齐 Web 和 小程序多端的一个解决方案.在使用时,还是需要注意 小程序和 Web 之间的开发差异性,为了磨平这块内容,提供 kbone-ui 组件库.通过,kbone-ui 来磨平大部分的实

【d3.js实践教程特别篇】PornHub发布基于d3的网民观看成人视频时长分布交互式地图

学习d3.js(以下都简称d3)也有一段时间了,运行d3做了几个项目.我发现中文的d3教程很少,国外资料多但要求有一定的英文阅读能力(推荐网址:http://bl.ocks.org/mbostock),于是就萌发了写一个d3实际运用系列文章的想法,现在开始付之行动.在系列中,我会用d3+html5 canvas实现一些实际效果(如统计结果展示,地图数据展示等),希望可以跟大家共同学习交流. 代码我公布在git.cschina.com上,大家可以clone到本地运行,地址是:http://git.

MDX解决方案(第2版)实践 - MDX(基础篇)

第一章 看了本书的第一章,总体一个印象,废话真多.话不多说:整理书中知识点,实践出真理! 知识点:MDX语法:简单的函数介绍; 首先语法网上流传的很多,读者应该具备cube(多维数据集)的知识基础,我这里就做简单说下:MDX是支持表达式语言和查询语言的:维度!多维数据集中的维度具有一个或者多个层级的,并且每个层次级别包含一个或多个级别.(例如:Date维度的Calendar层次结构包含下面的级别-Calendar Year.Calendar Semester.Calendar Month).成员

pixijs使用教程--基础篇

Pixi.js使用WebGL,是一个超快的HTML5 2D渲染引擎.作为一个Javascript的2D渲染器,Pixi.js的目标是提供一个快速的.轻量级而且是兼任所有设备的2D库.提供无缝 Canvas 回退,支持主流浏览器,包括桌面和移动. Pixi渲染器可以开发者享受到硬件加速,但并不需要了解WebGL. 在线Demo Pixi.js的GitHub主页上,列举了很多在线Demo. GitHub:https://github.com/GoodBoyDigital/pixi.js/ 官网: h

mysql集群搭建教程-基础篇

       计算机一级考试系统要用集群,目标是把集群搭建起来,保证一个库dang了,不会影响程序的运行.于是在孟海滨师哥的带领下开始了我的第一次搭建mysql集群,首先看了一些关于集群的资料,然后根据步骤一步步的整,遇到了一些问题,在这里把我遇到的问题以及解决方法分享出来. [是什么]         集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能.可靠性.灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术.         MySQ

给深度学习入门者的Python快速教程 - 基础篇

实在搞不定博客园的排版,排版更佳的版本在: https://zhuanlan.zhihu.com/p/24162430 Life is short, you need Python 人生苦短,我用Python -- Bruce Eckel 5.1 Python简介 本章将介绍Python的最基本语法,以及一些和深度学习还有计算机视觉最相关的基本使用. 5.1.1 Python简史 Python是一门解释型的高级编程语言,特点是简单明确.Python作者是荷兰人Guido van Rossum,1