为了账号安全,请及时绑定邮箱和手机立即绑定

如何按日期在Git中结帐?

如何按日期在Git中结帐?

Git
波斯汪 2019-11-05 11:16:18
我正在源代码中进行回归。我想告诉Git:“根据参数化的日期/时间检出源”。这可能吗?我也根据我当前的观点上演了一些不想失去的更改。理想情况下,我想在当前来源和我之前感兴趣的某个版本之间来回切换。
查看完整描述

3 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

保持当前更改

您可以使用保留工作,而无需提交git stash。您会习惯于git stash pop将其取回。或者,您可以(如carleeto所说)将git commit其转移到另一个分支。


使用rev-parse按日期结帐

您可以使用以下命令在特定日期之前签出提交rev-parse:


git checkout 'master@{1979-02-26 18:30:00}'

有关可用选项的更多详细信息,请参见git-rev-parse。


如评论中所述,此方法使用reflog在历史记录中查找提交。默认情况下,这些条目在90天后过期。尽管使用reflog的语法不太冗长,但您只能追溯到90天。


使用rev-list按日期签出

另一个不使用reflog的选项是,使用以下命令rev-list在特定时间点获取提交:


git checkout `git rev-list -n 1 --first-parent --before="2009-07-27 13:37" master`

如果只想要历史记录,而不想要合并带来的版本,请注意--first-parent。那就是你通常想要的。


查看完整回答
反对 回复 2019-11-05
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

安迪的解决方案对我不起作用。在这里,我找到了另一种方法:


git checkout `git rev-list -n 1 --before="2009-07-27 13:37" master`


查看完整回答
反对 回复 2019-11-05
?
HUH函数

TA贡献1836条经验 获得超4个赞

看来您需要以下内容: 基于日期的Git结帐


换句话说,您用于rev-list查找提交,然后使用检出来实际获取它。


如果您不想丢失分阶段的更改,最简单的方法是创建一个新分支并将其提交到该分支。您始终可以在分支之间来回切换。


编辑:链接已关闭,所以这是命令:


git checkout `git rev-list -n 1 --before="2009-07-27 13:37" master`


查看完整回答
反对 回复 2019-11-05
  • 3 回答
  • 0 关注
  • 413 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信