怎样在Git log中获取两个主要版本之间的变更记录

本文介绍了如何使用Git的log命令来获取两个版本标签之间的所有提交记录,并进一步获取每次提交所涉及的具体改动行数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是科研中遇到的现实问题,觉得解决过程挺有意思的,简单记录一下:

我们知道Git的Commit都是用SHA1 Hash值表示的,通过git log命令实际上很容易对多个Commit进行统计、查询、显示。但是在软件工程领域的研究中,我们通常会比较关心某个软件在两个版本之前是怎样演化的,这时候简单操作SHA1值是得不到我们想要的结果的。所以要实现这个需求还稍微有点麻烦:

我们知道,Git中可以通过打标签标示重要、主要的版本演化,例如我们可以参考这里的介绍:

http://blog.youkuaiyun.com/liuyuntianxia_128/article/details/53840493

我们以Apache Ant为例,如果输入:

git tag

会显示Apache Ant的所有主要版本,例如:ANT_170和ANT_198_RC1,这两个Tag很好理解,分别是ant 1.7.0和ant 1.9.8-RC。

接下来我们希望能获取上面两个版本之间的所有Commit记录,应该怎么做呢?

网上实际上已经有很多对git log命令的介绍,例如这里:

http://blog.youkuaiyun.com/wh_19910525/article/details/7468549

另外实际上在Git官网上也有多git log命令的简介:

https://www.git-scm.com/docs/git-log

但是都没有能完全满足上面这个需求的,仔细看看下面这个网页,可以看到有这样一个例子:

git log v2.6.12.. include/scsi drivers/scsi

似乎可以指定从哪个Tag开始,那也应该可以指定从哪个Tag结束吧,简单找了找,发现果然在StackOverflow上有人问这个问题了:

http://stackoverflow.com/questions/8136178/git-log-between-tags

所以要实现我们的目标,其实也很简单:

git log ANT_170..ANT_198_RC1 --name-status > version-log-ant.txt

将log输出到一个txt文件中,然后就可以进行后续分析了。

如果想知道每次Commit修改了哪些行,可以用这个命令:

git log ANT_170..ANT_198_RC1 --stat > change-details.txt

就是这个简单的过程,但也经历了一些探索,所以简单总结一下,希望对其他朋友会有点帮助。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值