根据日期检查来自 git 的旧提交
Checkout old commit from git based on date
由于与另一个项目(共享此代码)不兼容,我正在尝试从 git 检索旧提交。 git 存储库是 OpenZWave。
我在 SO 上发现 post 说要发出命令:
git checkout @{14.days.ago}
但这会导致:
warning: Log for '' only goes back to Wed, 23 May 2018 08:02:05 -0400.
HEAD is now at 77a05ed... Update hs-ms100plus.xml
我不知道出了什么问题 - 显然有比今天日期更早的提交。这个命令有什么问题? (该命令是否会导致我的克隆被 14 天前的代码替换)
为什么没有成功?
git checkout @{14.days.ago}
尝试根据 reflog(过去 HEAD 指向的所有提交的记录)在给定时间恢复 特定存储库 的本地状态。如果这是一个新的克隆,它将无法工作。
所以,好的语法将不起作用,您需要找到一些一年前完成的提交,并通过哈希检查它。怎么做?
如何查找一年前提交的提交?
我会尝试在 gitk
中找到合适的提交,在大多数情况下滚动浏览一年的提交应该不是问题。但是,您也可以像这样 grep 日志:
git log --date=iso | grep -C3 2017-05-
或者,如果您知道在特定日期提交了提交,如下所示:
git log --date=iso | grep -C3 2017-05-23
简短说明:
--date=iso
确保日期以易于 greppable 的方式显示。
-C3
选项使 grep
包括上下相邻的 3 行,这样对于每次提交,我们都会捕获带有哈希的行和提交消息的第一行。
语法 @{XXX.days.ago}
指的是 reflog,除了显示的历史之外,Git 保存的本地历史。 git log
。因此,@{14.days.ago}
表示 "where HEAD
pointed to 14 days ago on this repository, on my computer",而不是 "the commit made 14 days ago"(这可能是在另一台计算机上的另一个存储库中创建的)。
您可以改为:
- 获取提交 ID,例如
git log --before 14.days.ago -1
- 检查此提交:
git checkout
由于与另一个项目(共享此代码)不兼容,我正在尝试从 git 检索旧提交。 git 存储库是 OpenZWave。
我在 SO 上发现 post 说要发出命令:
git checkout @{14.days.ago}
但这会导致:
warning: Log for '' only goes back to Wed, 23 May 2018 08:02:05 -0400.
HEAD is now at 77a05ed... Update hs-ms100plus.xml
我不知道出了什么问题 - 显然有比今天日期更早的提交。这个命令有什么问题? (该命令是否会导致我的克隆被 14 天前的代码替换)
为什么没有成功?
git checkout @{14.days.ago}
尝试根据 reflog(过去 HEAD 指向的所有提交的记录)在给定时间恢复 特定存储库 的本地状态。如果这是一个新的克隆,它将无法工作。
所以,好的语法将不起作用,您需要找到一些一年前完成的提交,并通过哈希检查它。怎么做?
如何查找一年前提交的提交?
我会尝试在 gitk
中找到合适的提交,在大多数情况下滚动浏览一年的提交应该不是问题。但是,您也可以像这样 grep 日志:
git log --date=iso | grep -C3 2017-05-
或者,如果您知道在特定日期提交了提交,如下所示:
git log --date=iso | grep -C3 2017-05-23
简短说明:
--date=iso
确保日期以易于 greppable 的方式显示。-C3
选项使grep
包括上下相邻的 3 行,这样对于每次提交,我们都会捕获带有哈希的行和提交消息的第一行。
语法 @{XXX.days.ago}
指的是 reflog,除了显示的历史之外,Git 保存的本地历史。 git log
。因此,@{14.days.ago}
表示 "where HEAD
pointed to 14 days ago on this repository, on my computer",而不是 "the commit made 14 days ago"(这可能是在另一台计算机上的另一个存储库中创建的)。
您可以改为:
- 获取提交 ID,例如
git log --before 14.days.ago -1
- 检查此提交:
git checkout