git:如何在特定日期检索所有文件

时间:2010-07-01 20:01:48

标签: git

我确信这可以完成(?)(在明文中它会非常简单)。

3 个答案:

答案 0 :(得分:12)

使用git log确定要切换到的合适修订版本,例如:

git log --since='2010-04-01' --until='2010-04-02'

这将显示2010-04-01上的所有提交,因此只需选择与您想要文件的瞬间相对应的提交,并记下其提交ID。然后使用git checkout COMMIT-ID将工作区切换到该提交。这将从当前分支中分离您的工作区(HEAD),使用git checkout master返回。

答案 1 :(得分:4)

不要忘记像Git这样的DVCS中的file timestamp are not recorded 只有提交时间戳,您可以在特定日期轻松签出提交。

git checkout master@{1 month 2 weeks 3 days 1 hour 1 second ago}

(注意:这样的结账会给你一个detached HEAD


在ClearCase中,如果您将“保存文件时间”选项设置为true ,这很容易
(如果没有,你实际上记录了每个文件的签入时间,这有点像Git提交时间戳,除了每个文件)

答案 2 :(得分:2)

首先,您必须获取标识提交的字符串:

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

它打印字符串(例如XXXX),复制它并执行以下命令:

git checkout XXXX