【问题标题】:Find out which is latest between two commit strings找出两个提交字符串之间哪个是最新的
【发布时间】:2019-12-04 19:08:01
【问题描述】:

假设我有两个提交 ID:ba8a919c15a66b,我怎么知道哪个是最新的?

【问题讨论】:

  • 最新怎么定义?
  • 最新的提交日期

标签: git git-log


【解决方案1】:

使用git log 获取提交日期。 -1 将输出限制为一行

git log -1 --pretty="%h %cd" ba8a919 
git log -1 --pretty="%h %cd" c15a66b

你可以做一些花哨的事情..

ONE=ba8a919
TWO=c15a66b
if [[ `git log $ONE..$TWO` == "" ]]; then
  echo $TWO is newer
else
  echo $ONE is newer
fi

【讨论】:

  • 请注意,“较新的祖先”和“较新的日期”可以产生不同的答案。这两个提交可能没有祖先/后代关系(可能两者具有相同的父级,但只是彼此的兄弟姐妹)。所以“正确”的方法真的取决于上下文。
【解决方案2】:

为了简单起见,

git log -1 ba8a919 c15a66b

也可以,因为您要求两者同时输出,但将输出限制为一个。

它是双向的,当然,你可以喂

git log -1 c15a66b ba8a919

并且具有相同的输出,两者都是最新的。


脚本版本:如果您需要在脚本中使用它,将两个哈希作为参数并期望返回一个哈希,请选择管道对应:

git rev-list -1 <hash1> <hash2>
# returns the long-form hash of the latest one

【讨论】:

  • 默认按提交者日期排序。您可以使用--author-date-order 将其更改为作者日期。请注意,--since--until(或 --before--after)始终使用提交者日期,无论排序顺序如何。
  • 感谢您的精确,我已编辑。现在清楚多了!
猜你喜欢
  • 1970-01-01
  • 2019-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
相关资源
最近更新 更多