据我所知,要获取某个文件的旧版本,我需要输入:
git checkout COMMIT-HASH -- file-name.ext
Run Code Online (Sandbox Code Playgroud)
但是,如果我不从某个提交中获取所有修改过的文件吗?我可以输入以下内容吗:
git checkout COMMIT-HASH -- *
Run Code Online (Sandbox Code Playgroud)
PS我知道我可以手动列出文件,但是如果有很多文件,这并不方便。
如果我正确理解您的要求,则可以认为以下两种方法之一可以胜任:
git reset --merge <commit>
Run Code Online (Sandbox Code Playgroud)
要么
git checkout <commit> -- .
Run Code Online (Sandbox Code Playgroud)
如果您的工作目录中当前有一些文件不在<commit>,则它们仍将存在,这可能会使事情感到困惑,具体取决于您要执行此操作的原因。一种仅获得其内容的干净工作树的替代方法是<commit>:
rm -r *
git archive --format=tar <commit> | tar xf -
Run Code Online (Sandbox Code Playgroud)
为此,您也可以在上述git resetor git checkout命令之前清空工作树。
这些都不会使您真正地动起来HEAD,我认为这是您想要实现的效果...
SLa*_*aks -4
只是根本不传递文件名。
git checkout COMMIT-HASH
Run Code Online (Sandbox Code Playgroud)