Git命令之tag差异比较

博客介绍了使用Git比较两个tag区别的几种方式。以tag v1.0和v2.0为例,可通过git log v2.0 ^v1.0、git log v1.0..v2.0、git log v1.0...v2.0、git log --left-right v1.0...v2.0等命令查看不同情况的差异,还提醒注意commit后的箭头指向。

比较两个tag的区别有以下几种方式:

例如两个tag分别为v1.0、 v2.0

1. git log v2.0 ^v1.0

查看v2.0上有,而v1.0上没有的部分;

2. git log v1.0..v2.0

查看v2.0上比v1.0多的部分;

3. git log v1.0...v2.0

只查看版本之间差异;

4. git log --left-right v1.0...v2.0

只查看版本之间差异,显示出每个差异commit所在的版本。

注意 commit 后面的箭头,根据我们在 –left-right v1.0…v2.0 的顺序,左箭头 < 表示是 v1.0 的,右箭头 > 表示是 v2.0的。

 

 

### 根据 Git 标签统计代码变更差异Git 中,可以通过标签(tag)来定位特定的提交版本,并基于两个标签之间差异进行代码变更统计。这种操作在版本发布、代码审计、变更分析等场景中非常实用。 #### 1. 查看两个标签之间的文件变更统计 使用 `git diff` 命令配合 `--stat` 选项可以查看两个标签之间所有变更的文件及其增删行数: ```bash git diff v1.0.0 v2.0.0 --stat ``` 该命令将输出类似以下内容: ``` src/main.c | 12 +++++++----- include/utils.h | 4 ++-- 2 files changed, 9 insertions(+), 7 deletions(-) ``` #### 2. 获取两个标签之间的详细变更统计信息 若需要更详细的每文件增删行数,可以使用 `--numstat` 选项: ```bash git diff v1.0.0 v2.0.0 --numstat ``` 输出示例如下: ``` 7 5 src/main.c 2 2 include/utils.h ``` 这表示 `src/main.c` 文件新增 7 行,删除 5 行。 #### 3. 统计两个标签之间的总增删行数 可以结合 `awk` 提取总增删行数: ```bash git diff v1.0.0 v2.0.0 --numstat | awk '{plus+=$1; minus+=$2} END {print "Additions: " plus ", Deletions: " minus}' ``` 输出示例如下: ``` Additions: 9, Deletions: 7 ``` #### 4. 查看两个标签之间的所有提交记录 结合 `git log` 可以查看两个标签之间所有的提交记录: ```bash git log v1.0.0..v2.0.0 --pretty=format:"%h %an %s" ``` 输出示例如下: ``` abc1234 Alice Update dependency def5678 Bob Fix bug in login flow ``` #### 5. 查看两个标签之间的每次提交详细变更 如果需要查看每次提交的具体变更内容,可以使用: ```bash git log -p v1.0.0..v2.0.0 ``` 此命令将展示两个标签之间每个提交的完整 diff 信息。 #### 6. 查看标签之间的提交数量和作者统计 结合 `git shortlog` 可以统计两个标签之间提交的作者分布: ```bash git log v1.0.0..v2.0.0 --shortlog ``` 输出示例如下: ``` Alice (2): Update dependency Improve test coverage Bob (1): Fix bug in login flow ``` ### 总结 通过 Git 标签进行代码变更统计时,可以灵活使用 `git diff` 和 `git log` 等命令组合,获取文件变更、增删行数、提交记录、作者分布等多维度信息。这些命令在版本管理、发布报告、代码审查等场景中具有广泛应用价值。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值