Git 从精确提交中 check out 所有文件

标签 git git-checkout

据我所知,要获取某些文件的旧版本,我需要输入:

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/

相关文章:

php - 从 PHP 网站进行 Git checkout ?

git - 如何在 GitHub for Windows 中提交除一个文件以外的所有文件

git - 将 ssh 公钥添加到服务器上的 root 用户

javascript - Node 应用程序上无法获取/文件名错误

git - 通过 shell 变量将配置选项传递给 git clone

Git stash then checkout 每次

git - checkout 新分支后是否需要 `pull`?

git - 在 git 中切换分支 - 我什么时候会得到 "You have local changes cannot switch branches."?

git - 如何使用 git 查看 GitHub pull 请求?

git - 错误 : pathspec 'test-branch' did not match any file(s) known to git