git获取数字顺序版本号

因为git的版本使用的是hash值,不能很直观的看出那个版本,所以想找到一种方法,获取顺序的版本号,在网上找到了方法,可以获取顺序版本号

摘自:[使用bash从SVN和Git中获取顺序版本号](http://zengrong.net/post/1798.htm)
基准版本号默认是1,可以通过传递一个参数修改
get_version()
{
local base=${1:-1}
echo $((`git rev-list --all|wc -l` + $base))
}
get_version 7000

hook修改提交信息,自动添加顺序版本号

hook解释

  1. 自定义 Git - Git 钩子
  2. Git钩子:自定义你的工作流

实现我们的需求

git提交时都需要写提交信息,eg:本次修改了某个函数...

我想通过hook修改为: [ 顺序版本号 ]: 本次修改了某个函数...

直接拷贝一份.git/hook目录下的 commit-msg.sample --> commit-msg

然后添加一下代码:

get_version()
{
local base=${1:-1}
return $((`git rev-list --all|wc -l` + $base))
}
get_version
version=$?
echo "[ $version ]"': '$(cat "$1") > "$1"
注解1:

echo "[ $version ]"': '$(cat "$1") > "$1" 这种写法其实参考了http://stackoverflow.com/questions/5894946/how-to-add-gits-branch-name-to-the-commit-message

代码如下:

Here is my commit-msg script as an example:

#!/bin/sh
#
# Automatically adds branch name and branch description to every commit message.
#
NAME=$(git branch | grep '*' | sed 's/* //')
DESCRIPTION=$(git config branch."$NAME".description) echo "$NAME"': '$(cat "$1") > "$1"
if [ -n "$DESCRIPTION" ]
then
echo "" >> "$1"
echo $DESCRIPTION >> "$1"
fi
Creates following commit message: [branch_name]: [original_message] [branch_description]
I'm using issue number as branch_name, issue description is placed to the branch_description using git branch --edit-description [branch_name] command. More about branch descriptions you can find on this Q&A.
注解2:
get_version
version=$?

这是shell获取函数返回值的方式,参考:Linux Shell函数返回值

git: hook 修改提交信息的更多相关文章

  1. git执行cherry-pick时修改提交信息

    git执行cherry-pick时修改提交信息 在本地分支执行cherry-pick命令时有时需要修改commit message信息,可以加参数-e实现: git cherry-pick -e co ...

  2. Git批量修改提交历史

    有些时候我们可能需要批量修改提交历史,当然了,最近一次的提交历史很简单我们可以利用 git commit --amend 来进行最近一次提交的修改,如果你此时想要更新作者提交时间等也可以在amend之 ...

  3. 在GIT中修改提交记录

    在SVN中,提交记录是无法修改的.比如说,当我们提交了某次修改后,发现该次提交中有错误时,只能将将补丁再次提交一遍.这样,就存在两次提交记录,没有保证提交的原子性. 在GIT中,由于提交是在本地进行的 ...

  4. Git show-branch显示提交信息

    git中查看日志,我们用的比较多的就是 git log 以及带一些参数,如: 以一行显示提交日志: $ git log --pretty=oneline 显示最后的几次提交日志: $ git log ...

  5. git查看/修改个人信息-用户名邮箱

    我们在使用git作为仓库管理工具时,要设置自己Git的用户名和邮箱,要不然大家一块开发时不知道谁是谁,不知道谁提交的. 另外,当我们用自己的电脑开发时你可能设置的是一个你喜欢的昵称,所以那就得改一下. ...

  6. Git+VS2015修改提交代码以及解决冲突

    第一步:前提我们已经讲代码从git上clone(可以看我的GIt篇)下来,创建自己的开发分支.我们在自己本地的分支上开发. 看到右下角有一个develop那是我自己建立的开发的分支,现在点击devel ...

  7. git rebase 合并提交 解决超过100M文件的提交不能推送问题

    git log 现在可以看到有3个提交: change 1.mp4 size to small //发现不能推送,又改回小于100M add 1.mp4 big 改变为超过100M add 1.mp4 ...

  8. git rebase 合并提交

    git rebase 合并提交 合并最近多次提交记录 语法 git rebase -i HEAD~n 1.进入合并模式 合并最近三次提交 git rebase -i HEAD~3 然后你会看到一个像下 ...

  9. Git 实战手册(一): 批量修改log中的提交信息

    本文须知 教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步原文地址 有空就来看看个人技术小站, 我一直都在 背景介绍 事情的起源是这样的:迷恋的谷歌的我最近申请了一个新的 googl ...

随机推荐

  1. 一、hexo+github搭建个人博客的过程记录

    前提: 1.新建一个github仓库 2.安装配置Node.js 3.安装配置Git 前提 步骤1.新建一个github仓库 打开github网站,(注册)登录账号,新建一个仓库; 注:==仓库名称要 ...

  2. python学习--大数据与科学计算第三方库简介

    大数据与科学计算  库名称 简介 pycuda/opencl GPU高性能并发计算 Pandas python实现的类似R语言的数据统计.分析平台.基于NumPy和Matplotlib开发的,主要用于 ...

  3. Python数据分析Pandas的编程经验总结

    Pandas的api 参考手册DataFrame部分:https://pandas.pydata.org/pandas-docs/stable/reference/frame.html 数据处理部分: ...

  4. 如何写出优雅的 Golang 代码

    原文: https://draveness.me/golang-101.html Go 语言是一门简单.易学的编程语言,对于有编程背景的工程师来说,学习 Go 语言并写出能够运行的代码并不是一件困难的 ...

  5. 关于使用PreApplicationStartMethod实现module注册问题

    在使用PreApplicationStartMethod实现module注册问题发现一个问题: //用PreApplicationStartMethod实现自注册模块 [assembly: PreAp ...

  6. 浅谈Spring解决循环依赖的三种方式

    引言:循环依赖就是N个类中循环嵌套引用,如果在日常开发中我们用new 对象的方式发生这种循环依赖的话程序会在运行时一直循环调用,直至内存溢出报错.下面说一下Spring是如果解决循环依赖的. 第一种: ...

  7. php+Apache2+Nginx+Mysql

        Nginx         1.安装Nginx     sudo apt-get clean     sudo apt-get update     sudo apt-get install ...

  8. Maven项目配置Logback输出JSON格式日志

    最近,项目提出需求,日志需要固定输出为JSON格式,以便后端Flink程序解析. 项目背景 项目为简单的Maven项目,日志由Filebeat采集,因此不需要配置输出至Logstash. 下面为pom ...

  9. 搜索引擎框架之ElasticSearch基础详解(非原创)

    文章大纲 一.搜索引擎框架基础介绍二.ElasticSearch的简介三.ElasticSearch安装(Windows版本)四.ElasticSearch操作客户端工具--Kibana五.ES的常用 ...

  10. 服务器学习--Linux基本操作指令

    小编后续会持续更新 1.修改服务器的hostname [root@mexihq ~]# hostname [root@mexihq ~]# hostnamectl set-hostname xxx P ...