git - 两个标签之间更改的文件的 git 列表以及中间标签更改
问题描述
我正在尝试获取在两个 git 标签之间更改的文件列表。这些标签还有一些其他标签。
git diff tags/v1.0.0 tags/v1.5.0 --name-only
上面的命令显示了这些标签之间的差异(仅 v1.5.0 中的更改)并且不包括中间标签更改。我也试过
git rev-list tags/v1.5.0 ^tags/v1.0.0 --count
这会给我这两个标签之间的提交计数。接着
git diff tags/v1.5.0~count tags/v1.5.0 --name-only
但这给了我不正确的数据。
任何帮助表示赞赏。提前致谢
解决方案
git rev-list tags/v1.5.0 ^tags/v1.0.0 --count
这会给我这两个标签之间的提交计数。
不,它将为您提供无法从 .tags/v1.5.0
tags/v1.0.0
为了说明差异,假设我们有一个这样的图形片段:
*--*--* * <-- tags/v1.5.0
/ \ /
...--o--o---------*--*--o--o--o <-- master
\
o--o <-- tags/v1.0.0
在这里,发布v1.0.0
与顶部的功能气泡几乎同时创建,但随后需要进行一些修复。后来,该功能被合并到 master 中,从那时起v1.5.0
创建了 release 并且需要一次提交来修复它。(同时master
继续积累工作。)
标有星号的提交*
可以从标签到达,从tags/v1.5.0
标签指向的提交开始并向后工作,遵循所有路径(包括功能气泡)。
在这种情况下,有六个这样的提交。
git diff tags/v1.5.0~count tags/v1.5.0 --name-only
该~
运算符是一个图形跟随运算符。它向后移动了一些第一个父步骤。提交的第一个父级1.5.0
是 on master
,第二个父级是合并提交 on master
,第三个父级是 main-line-row *
。第四个父级是o
具有通向 的分叉的那个tags/v1.0.0
,第五个是可从所有名称访问的提交,沿该第一个父级轴返回的第六个提交位于此处显示的图表部分之前。
因为您的实际问题没有明确定义,所以很难说正确的方法可能是什么。您可能会在两个标签之间查找合并基础,然后用于--ancestry-path
选择作为此合并基础的后代但第二个标签的祖先的提交,并检查是否可以从其他标签访问这些提交中的任何一个以及是否那么什么合并基地沿着祖先路径线落下。请注意,从tags/v1.0.0
to的直接祖先路径tags/v1.5.0
是空的,因为tags/v1.0.0
它不是任何已加星标的提交的祖先。
推荐阅读
- react-native - 一种在不卸载的情况下随机导航到特定屏幕的方法,该方法被多次创建(推送)
- php - 如何在 slim 框架 4 中使用学说?
- xamarin - 如何将自定义表情符号加载到键盘?
- python - 执行时间中的 Python 基准测试峰值
- python - 无法在 python azure 函数中导入 pyodbc 模块
- c# - 访问 tensorflow cnn 模型的中间层?
- java - 字符串排序和字符串比较有什么区别。它们与我们必须比较字符串才能对其进行排序不是一回事吗?
- java - 如何在 java 中发送 ZOHO SMTP 服务器邮件?
- php - 无法使用 Laravel 6.9 安装依赖项
- angular - Angular 测试:必须有要重构的源文件中的错误