按“添加到分支的时间”排序的Git提交历史记录

3
在Git中,可以创建一个主题分支,其中包含一个或多个提交,这些提交在创建时被日期标记。稍后,这些提交可以通过合并或变基添加到不同的分支中。
通常,git log将显示按提交创建日期和时间排序的提交列表。是否可以根据提交添加到当前分支的日期和时间查看此列表?更具体地说,我想编写一个脚本,无论提交是何时创建的,都会返回给我“上周添加到分支中的提交列表”。
一个简单的例子:
假设在7月22日在分支topic上创建了一个提交。几天后,在7月25日,将topic分支合并到master分支中。如果我运行我的假设的list-commits脚本,要求显示所有在“7月25日或之后”添加的提交,那么我希望上述提交能够出现,因为它在“7月25日合并”,即使它是“7月22日创建”的。
另外需要注意的一点是,在我的典型Git工作流程中,我只使用快进提交,因此当我将一个分支合并到另一个分支时,不会生成合并提交。我需要一种方法来检索此信息,而不依赖于合并提交。
2个回答

1
你需要撤销分支中的任何合并才能确定提交何时添加到分支中,除此之外,只有提交的时间被存储。基本上,找到任何合并提交,并通过它们确定事件顺序。

通常我只进行快进式合并,因此不会生成合并提交。在这种情况下是否有其他替代方法? - CmdrMoozy
好问题。我会编辑您的原始问题并添加这个澄清,看看是否有其他人有答案。 - d1str0

1
你可以编写一个脚本来为你合并,添加一个描述已合并内容的附加提交。这种方法会给你很大的自由度,因为你可以在合并之前或之后修改主分支,并选择最佳排列方式。 编辑 git reflog 可能会提供你所缺少的信息。通过一些工作,

这在理论上是可行的,但是仅为了实现“提交摘要”脚本而创建额外的提交似乎有些混乱。 - CmdrMoozy
@CmdrMoozy:嗯...... git reflog 是否符合您的需求? - John Fisher
我认为 git reflog 包含了正确的信息,但它的格式并不是特别易用。首先,当我将一个主题分支 git rebase 到主分支上的新提交时,我的主题分支中的所有提交都会在 reflog 中列出,因为它们在新基础之上回放。当然,这可以通过编程方式进行分析,但可能需要一些努力。有没有办法让 git reflog 仅显示 HEAD 第一次指向唯一提交的时间?此外,在合并中,它似乎不会逐个列出提交。有没有办法让它像 rebase 一样做到这一点? - CmdrMoozy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接