我想知道与 100 submit in branch 相关的 commit-id dev。(例如:)git rev-list --reverse --branches=dev --date-order --count <commit-id> == 100:
得到 100 次提交是1f345e80fba518c72dec7f2e02da5da12be5810f:
$ git rev-list --reverse --branches=dev --date-order HEAD | head -100 | tail -1
1f345e80fba518c72dec7f2e02da5da12be5810f
$ git rev-list --reverse --branches=dev --date-order HEAD | nl | grep 100
100 1f345e80fba518c72dec7f2e02da5da12be5810f
$ git rev-list --reverse --branches=dev --date-order HEAD | awk '{print NR"\t"$0}' | grep -E ^100
100 1f345e80fba518c72dec7f2e02da5da12be5810f
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试验证有关此 commit-id ( 1f345e80fba518c72dec7f2e02da5da12be5810f)的 rev-number 时,结果显示:rev number is 98 !!!
$ git rev-list --reverse --branches=dev --date-order --count 1f345e80fba518c72dec7f2e02da5da12be5810f
98
$ git rev-list --reverse --branches=dev --date-order 1f345e80fba518c72dec7f2e02da5da12be5810f | nl | tail -1
98 1f345e80fba518c72dec7f2e02da5da12be5810f
Run Code Online (Sandbox Code Playgroud)
因此,我尝试找出缺少哪 2 个提交:
$ git rev-list --reverse --branches=dev --date-order HEAD | head -100 | nl > commit-100.log
$ git rev-list --reverse --branches=dev --date-order 1f345e80fba518c72dec7f2e02da5da12be5810f | head -100 | nl > commit-98.log
$ diff -y commit-100.log commit-98.log
90 63546ce0207cdd6ade353ea05c466d0210af1d29 | 90 75a8fd85043908049e11595aaa2c988282fa1a0c
91 75a8fd85043908049e11595aaa2c988282fa1a0c | 91 c1bbb33cd0241c16dde2579696c08ed2eb146cdf
92 c1bbb33cd0241c16dde2579696c08ed2eb146cdf | 92 28e9bbc06cb3036bce4cce71f5acf4b27835e9a0
93 28e9bbc06cb3036bce4cce71f5acf4b27835e9a0 | 93 7b1d0caddc6218eb982d27c1df27c885bc84204c
94 7b1d0caddc6218eb982d27c1df27c885bc84204c | 94 945fd63a256391e72e55e8ac98c449c1473c1e5e
95 945fd63a256391e72e55e8ac98c449c1473c1e5e | 95 0ff3f47eb8dc40815ac7effdb2172e5d69dd0e10
96 0ff3f47eb8dc40815ac7effdb2172e5d69dd0e10 | 96 ac90a7b2a371ff7a0fad0475d94691663aceaa1b
97 ac90a7b2a371ff7a0fad0475d94691663aceaa1b | 97 1a0e26b517f88870fed0cf5f346495b67c29463a
98 937807239dd706f3bf124dd4d3266c71fd8071f4 | 98 1f345e80fba518c72dec7f2e02da5da12be5810f
99 1a0e26b517f88870fed0cf5f346495b67c29463a <
100 1f345e80fba518c72dec7f2e02da5da12be5810f <
Run Code Online (Sandbox Code Playgroud)
显然,缺少的 2 个commit-id 是:
90 63546ce0207cdd6ade353ea05c466d0210af1d29
98 937807239dd706f3bf124dd4d3266c71fd8071f4
Run Code Online (Sandbox Code Playgroud)
据git show <commit-id>,并没有什么奇怪的。这两个提交是由同一个人提交的。但是这个人在前 100 次提交中提交了 10 次。
有git rev-list问题吗?
我不太清楚你想做什么,但git rev-list不这样做,不管它是什么。
什么git rev-list是列出可到达的提交,通过遍历提交图,从一组特定的起点开始,同时应用一些约束。步行本身可以按特定顺序完成,可以选择简化一些提交,您可以使用 提前停止步行--max-count或跳过一些初始提交--skip,并且在找到一组提交后,可以反转和/或计数。
您没有对图形本身设置任何约束(没有路径参数),也没有启用任何简化模式或跳过或最大计数,但您最终确实要求反转集合。
您的开始点是--branches=dev(该装置--branches=dev/*)和 HEAD在一种情况下,与--branches=dev 和提交1f345e80fba518c72dec7f2e02da5da12be5810f于另一个。
您要求在 中完成步行--date-order,这意味着只要 Git 有两个提交,它现在可以步行,它应该选择具有较晚提交时间戳的那个,只要它没有选择子提交的父提交它尚未选择。
可访问的提交集HEAD可能包括无法从refs/heads/dev/*(所有开发分支)选择的提交集访问的提交。1f345e80fba518c72dec7f2e02da5da12be5810f如果1f345e80fba518c72dec7f2e02da5da12be5810f不能从其中一个dev分支访问,则可访问的提交集也可能不同。第 100 次这样的提交(在反转列表之后)不同也就不足为奇了。
| 归档时间: |
|
| 查看次数: |
10259 次 |
| 最近记录: |