代码之家  ›  专栏  ›  技术社区  ›  c-urchin

Git:如何在某个日期检索所有文件

git
  •  12
  • c-urchin  · 技术社区  · 16 年前

    我相信这是可以做到的(?)(在ClearCase中,这很简单)。

    3 回复  |  直到 9 年前
        1
  •  4
  •   Community Mohan Dere    9 年前

    别忘了 file timestamp are not recorded 在像Git这样的DVC中。
    只有提交时间戳,您可以轻松地从某个日期签出提交。

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

    (注:这样的结账方式会给你一个 detached HEAD )


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

        2
  •  12
  •   araqnid    16 年前

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

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

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

        3
  •  2
  •   Luca C.    9 年前

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

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

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

    git checkout XXXX