怎样在Git log中获取两个主要版本之间的变更记录:怎样在Git log中获取两个主要版本之间的变更记录:这是科研中遇到的现实问题,觉得解决过程挺有意思的,简单记录一下:我们知道Git的Commit都是用SHA1 Hash值表示的,通过git log命令实际上很容易对多个Commit进行统计、查询、显示。
但是在软件工程领域的研究中,我们通常会比较关心某个软件在两个版本之前是怎样演化的,这时候简单操作SHA1值是得不到我们想要的结果的。所以要实现这个需求还稍微有点麻烦:
我们知道,Git中可以通过打标签标示重要、主要的版本演化,例如我们可以参考这里的介绍:
http://blog.csdn.net/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.csdn.net/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结束吧
所以要实现我们的目标,其实也很简单:
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
就是这个简单的过程,但也经历了一些探索,所以简单总结一下,希望对其他朋友会有点帮助。