好的,所以我add
编辑了commit
整个子目录到git(还没有push
,仍然是本地的,到.git
)。
然后我删除了整个子目录。 (.git
仍在那里。)
我现在想要它回来,从git。我该怎么做?
我尝试了git checkout
,但它只列出了该子目录中的删除文件。
我错过了什么?
答案 0 :(得分:5)
你必须git checkout subdirname
您也可以git checkout -- subdirname
--
用于避免含糊不清(例如,如果您有一个名为subdirname
的分支和其他角落案例。)以下是来自git checkout
的人的片段:< / p>
如果你有一个名为hello.c的不幸分支,这一步将被混淆为切换到该分支的指令。你应该写:
$ git checkout -- hello.c
答案 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是相关问题的一个很好的参考。