在git中卸载已删除的文件

通常,要放弃对文件的更改,您应该这样做:

git checkout -- <file> 

如果我想放弃的更改会删除文件呢? 上面的行会给出一个错误:

 error: pathspec '<file>' did not match any file(s) known to git. 

什么命令将恢复该单个文件而不撤消其他更改?

奖励点:另外,如果我想丢弃的更改是添加文件? 我想知道如何取消这种变化。

假设你想要撤销'git rm'或'rm',然后是'git add -A'或类似的东西:

 # this restores the file status in the index git reset -- <file> # then check out a copy from the index git checkout -- <file> 

要撤消'git add',假设你还没有提交,上面的第一行就足够了。

这两个问题都在git status回答。

要暂停添加新文件,请使用git rm --cached filename.ext

 # Changes to be committed: # (use "git rm --cached <file>..." to unstage) # # new file: test 

要暂停删除文件,请使用git reset HEAD filename.ext

 # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # deleted: test 

另一方面, git checkout --从不停止,它只是放弃非阶段性的变化。

你的两个问题的答案是相关的。 我将从第二个开始:

一旦你创build了一个文件(通常使用git add ,尽pipe其他的一些命令也隐含地把这些变化也放在了git rm ),你可以使用git reset -- <file>来退出这个变化。

在你的情况下,你必须使用git rm来删除文件,这相当于简单地用rm删除它,然后暂存这个变化。 如果你首先使用git reset -- <file>取消它,你可以使用git checkout -- <file>来恢复它。

如果它已经上演并提交,那么以下将重置该文件:

 git reset COMMIT_HASH file_path git checkout COMMIT_HASH file_path git add file_path 

这将用于之前发生的几个提交的删除。