据我所知,要获取某些文件的旧版本,我需要输入:
git checkout COMMIT-HASH -- file-name.ext
但是如果我不想从某个提交中获取所有修改过的文件呢?我可以输入类似的内容吗:
git checkout COMMIT-HASH -- *
附言我知道我可以手动列出文件,但是如果文件很多就不方便了。
最佳答案
如果我正确理解您的问题,我认为这两个中的一个可以完成这项工作:
git reset --merge <commit>
或
git checkout <commit> -- .
如果当前工作目录中有不在 <commit>
中的文件,它们仍会存在,这可能会使事情变得困惑,具体取决于您要执行此操作的确切原因。获得仅包含 <commit>
内容的干净工作树的一种替代方法会是这样的:
rm -r *
git archive --format=tar <commit> | tar xf -
就此而言,您可以在 git reset
之前清空您的工作树。或 git checkout
上面的命令,以及...
这些都不会实际移动您的 HEAD
,我认为这是你想要达到的效果......
关于Git 从精确提交中 check out 所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23956587/