Git相当于CVS结账或更新?

时间:2011-07-07 20:16:40

标签: git

好的,所以我add编辑了commit整个子目录到git(还没有push,仍然是本地的,到.git)。

然后我删除了整个子目录。 (.git仍在那里。)

我现在想要它回来,从git。我该怎么做?

我尝试了git checkout,但它只列出了该子目录中的删除文件。

我错过了什么?

2 个答案:

答案 0 :(得分:5)

你必须git checkout subdirname


您也可以git checkout -- subdirname

--用于避免含糊不清(例如,如果您有一个名为subdirname的分支和其他角落案例。)以下是来自git checkout的人的片段:< / p>

如果你有一个名为hello.c的不幸分支,这一步将被混淆为切换到该分支的指令。你应该写:

$ git checkout -- hello.c

http://git-scm.com/docs/git-checkout

答案 1 :(得分:2)

您需要执行git checkout -- file_path才能恢复它。请注意,git checkout -- a_file_name语法不仅可以在修改之前检索已删除的文件/目录,还可以检索其原始(最后提交的)表单。因此,如果您想撤消对a_changed_file的任何本地修改,git checkout -- a_changed_file也适用于此用例。

建议使用

--以避免文件名错误的问题,例如以连字符开头的文件名。它还消除了分支和共享相同名称的文件时的歧义。

git community book's chapter on undoing是相关问题的一个很好的参考。