我相信这是可以做到的(在ClearCase中会非常简单)。
我相信这是可以做到的(在ClearCase中会非常简单)。
使用git log
来确定适合切换的版本,例如:
git log --since='2010-04-01' --until='2010-04-02'
这将显示2010年4月1日的所有提交记录,因此只需要选择对应您想要文件的时间点的提交记录,并注意其提交 ID。然后只需使用 git checkout COMMIT-ID
切换工作区到该提交记录。这将使您的工作区(HEAD)与当前分支分离,使用 git checkout master
返回原来的分支。git checkout master@{<date>}
无法工作(因为所选日期不在 reflog 中)。您提供的解决方案可以解决这个问题,但这是唯一的解决方案吗?使用两个命令之间需要进行一些解析似乎有点笨拙。 - exhumagit checkout $(git log -n 1 --until='2017-04-02:00:00:00' --pretty='%H')
,但看起来仍然有点hacky。 - exhuma在像Git这样的分布式版本控制系统中,不要忘记文件时间戳没有被记录。
只有提交时间戳存在,您可以轻松地从特定日期检出提交。
git checkout master@{1 month 2 weeks 3 days 1 hour 1 second ago}
ref@{time}
语法使用引用日志。 引用日志是本地的。 这就是为什么 Steve 的日志仅追溯到克隆它的日期。 - Chris Johnsengit rev-list -n 1 --before="2009-07-27 13:37" origin/master
它会打印字符串(例如“XXXX”),将其复制并执行此命令:
git checkout XXXX