我有两个分支,其中提交是独立进行的,我想运行一个Git命令,它将显示在某个时间帧(表示为提交哈希)之间进行的所有提交,而不管分支。
这是我的测试报告,用于演示:https://github.com/jsniecikowski/testApp
如果我们将Git的历史想象成一个列表(最新的):
然后我想说:'给我在' 90f9149'之间发生的所有变化。和' 4332e0e'。 理想情况下,我会得到一个提交:18bc14a
我的理解是这个命令可行:
git log --full-index --no-abbrev --format=raw -M -m --raw 90f9149d2f7367738e9d6f4a53c2c325f96a9b5f..4332e0eb24e18119b10835e361915f1f5eff16bc
但是,此命令返回的结果多于预期。
这是git的错误,还是我在命令中遗漏了什么?
答案 0 :(得分:2)
根据您链接到的repo,如果您只想要18bc14a,则不希望master
和Release
之间的提交有所不同,但Release
中的提交不一致比master
中的最新提交更晚的日期。你确定吗?
在这种情况下,您可以使用以下命令获取最新提交的日期:
git log -1 master --pretty=%ad
以及发布日期以来的提交:
git log Release --since=<date>
将这些放在一起:
git log Release --since="$(git log -1 master --pretty=%ad)"
这还包括4332e0e,但你为什么不想要呢?如果您确实不这样做,请在^
之后添加Release
。
答案 1 :(得分:0)
Gauthier的优秀答案非常接近,但没有说明如何使用哈希来指定我们想要检查的区域。
建立在我的基础之上:
git log Build-Release-Testing --since="$(git log -1 90f9149d2f7367738e9d6f4a53c2c325f96a9b5f --pretty=%ad)" --until="$(git log -1 4332e0eb24e18119b10835e361915f1f5eff16bc --pretty=%ad)"
剩下的部分是从返回中消除指定的哈希值。