git checkout删除目录

问题描述:

我想知道如何能够立即恢复目录中的所有文件whit git checkout?git checkout删除目录

您可以使用目录路径,以将其添加或删除所有文件了,就象

git add /path/to/dir/ 

但是当我做

git checkout /path/to/dir/ 

我得到这样的

error: pathspec '/path/to/dir/' did not match any file(s) known to git. 

所以我必须手动添加每个文件,有没有更简单的方法?

+0

我想你需要澄清你的意思是“恢复目录中的所有文件”。你的意思是“放弃对该目录中文件的所有未提交的更改”?另外请注意,你不应该在'git checkout'中使用绝对路径 - 它应该是'path/to/dir'而不是'/ path/to/dir',路径相对于你当前的目录。 –

+0

它可能是绝对路径吗?我假设'git checkout'与相对于工作树的路径一起工作。 (例如,工作树中的'git checkout path/to/dir') – Boldewyn

+0

@Boldewyn:如果你使用绝对路径,即'fatal:'/ path/to/dir'在仓库之外,你会得到一个不同的错误如果路径导致存储库中的目录。我怀疑这是一个不正确的相对路径问题.... –

我认为你需要确定分支

git checkout mastergit checkout <treeish> -- /path/to/dir

更多信息: http://gitready.com/intermediate/2009/03/18/restoring-a-directory-from-history.html`

+0

显然它不是强制性的:http://schacon.github.com/git/git-checkout.html – lc2817

+2

解决方案:git checkout master - path/to /目录 – dazz

+1

我刚刚尝试过git checkout - dir,它正在工作。他刚刚忘记了双' - ' – lc2817

显然你可以做到这一点:watch here for an example。 命令

git checkout <treeish> -- /path/to/dir 

应该工作。在你的情况下,你不指定一个分支,它应该将目录的状态恢复到最后的提交。

也许你忘记了git checkout命令后的--
我甚至不知道,它可以在不--时不处理分支使用