如何在历史中的给定点重建Git分支的状态?

时间:2015-07-02 08:24:59

标签: git branch

Git不存储分支历史记录,因为分支只是提交历史记录中的一种移动标签。

但是,对于我来说,查看特定日期是否将某些代码更改推送到 master 非常重要。 (服务器在该日期获得了代码。)

这样做的惯用方法是什么?

1 个答案:

答案 0 :(得分:3)

一般而言,您无法通过设计来做到这一点。您可以判断提交是否在分支上,并且您可以判断提交何时创建,但您不一定能够回答您想要的问题。

但是有一些替代方案可能会有用。

  1. 合并到主分支时使用git merge --no-ff。这将创建合并节点,即使从DAG角度来看它是不必要的。然后,您可以在git消息中对其进行合并以进行合并,这将成为您以后分析的真实点。
  2. 使用git reflog随时查找master的状态。 reflog通常限制为90天,但可通过gc.reflogExpire选项进行调整。如果您有权访问本地存储库,则可能需要禁用对此的显式调用。
  3. 使用其他机制来追踪您的要求。您似乎想知道给定日期的主人是什么,以便您可以确定在给定日期推送的代码。但是,除非您拥有自动推送机制,否则在推送代码和安装代码之间会有区别 - 在这种情况下,使用它来创建无限的需求日志。或者,自动推送应该创建一个带注释的标签,这样您就可以验证推送的内容,并且可以包含其他元数据,例如启动操作的人员。