Git:以新名称查看旧版本的目录

时间:2017-10-01 08:34:59

标签: git git-checkout

如何以新名称查看以前版本的目录?

(我的repo中有一个目录foo。我想在当前工作树中创建一个目录foo_old,其内容是HEAD~2:foo的目录。我需要两个同时版本,为了确保它们给出相同的结果,测试这需要相当多的代码并要求同时提供两个结果(结果不是简单的整数,比如说),所以我不能简单地检查{ {1}}暂时做我想做的事情)

This question询问如何以新名称检出文件的先前版本,但接受的答案不能推广到目录。

2 个答案:

答案 0 :(得分:1)

你可以做得很简单:

git co -b new-branch-name    # create and go to new branch, just to be sure
git slg                      # get the commit hash you need for next step
git co [commit-hash]         # now you get the old folder by the state you need it

然后将您需要的目录复制到桌面。 (你现在在HEAD分离)

git co new-branch-name       # cause you are in detached head go back to new-branch

在桌面上将目录重命名为foo_old并将其粘贴到项目中所需的位置。

答案 1 :(得分:0)

我刚刚写了一个python script来从特定版本的Git历史记录中复制文件或子目录。

该脚本可以在控制台上显示内容或保存在某个目录下。它保留了文件执行权限和行尾。

脚本中的主要逻辑是:

  • 通过git ls-tree获取特定修订版目录中文件的列表
  • 遍历列表
    • 读取git cat-file修订时的文件内容
    • 设置文件模式