在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
这将用于之前发生的几个提交的删除。