在git中取消显示已删除的文件
通常,要放弃对文件的更改,您需要执行以下操作:在git中取消显示已删除的文件,git,git-checkout,Git,Git Checkout,通常,要放弃对文件的更改,您需要执行以下操作: git checkout -- <file> git签出-- 如果要放弃的更改是删除文件,该怎么办?上面的行将给出一个错误: error: pathspec '<file>' did not match any file(s) known to git. 错误:pathspec“”与git已知的任何文件都不匹配。 什么命令可以在不撤消其他更改的情况下恢复单个文件 奖励点:另外,如果我要放弃的更改是添加文件,该怎么办?
git checkout -- <file>
git签出--
如果要放弃的更改是删除文件,该怎么办?上面的行将给出一个错误:
error: pathspec '<file>' did not match any file(s) known to git.
错误:pathspec“”与git已知的任何文件都不匹配。
什么命令可以在不撤消其他更改的情况下恢复单个文件
奖励点:另外,如果我要放弃的更改是添加文件,该怎么办?我也想知道如何取消显示更改。这两个问题都在
git status
中得到了回答
要取消添加新文件的stage,请使用git rm--cached filename.ext
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: test
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: test
另一方面,
git checkout--
永远不会取消stage,它只会丢弃未分段的更改。您的两个问题的答案是相关的。我将从第二个开始:
暂存文件后(通常使用git add
,尽管其他一些命令也隐式地暂存更改,如git rm
),您可以使用git reset--
撤消该更改
在您的情况下,您必须使用
git rm
删除该文件,这相当于使用rm
删除该文件,然后转移该更改。如果您首先使用git reset--
将其解压,然后可以使用git checkout--
将其恢复,前提是您希望撤消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重置--
#然后从索引中签出一份副本
git签出--
若要撤消git add,假设您尚未提交,则上面的第一行就足够了。如果已暂存并提交,则以下操作将重置文件:
git reset COMMIT_HASH file_path
git checkout COMMIT_HASH file_path
git add file_path
这将适用于以前几次提交时发生的删除操作。从开始,您还有另一个选项:
git restore--staged--
我尝试了上述解决方案,但仍然有困难。我有其他文件,其中有两个文件被意外删除
要撤消两个已删除的文件,我必须取消所有文件的分级:
git reset HEAD .
此时,我能够签出已删除的项目:
git checkout -- WorkingFolder/FileName.ext
最后,我能够重新设置其余文件并继续提交。从手动页面
git-reset - Reset current HEAD to the specified state
git reset [-q] [<tree-ish>] [--] <paths>...
In the first and second form, copy entries from <tree-ish> to the index.
放弃更改和取消老化是两件不同的事情,你想做什么?这是一篇文章中两个不同的问题。这使得答案太多,不必要地令人困惑。我没有看到Debian上git 1.7.2.5中删除文件的提示。很高兴看到
git status
被引用;向用户展示了一种现在和下次自助的方式,以防在未来的git版本中添加或更新信息。这是错误的。“要提交的更改”是您在重置git之前看到的内容。在git重置之后,您会看到“已更改但未更新”,这在git作者的母语中显然意味着“未进行更改”。更重要的是,关于“git状态告诉你你所知道的一切”的整个教条都是谎言。(那些说这是浪费人们时间的经理应该被解雇。)--
是关键git reset
不起作用,这就是我来这里的原因。为什么只有在删除文件的情况下才需要end of options marker
?@handsv这不是严格要求的(你可以交替地做git reset HEAD
,这是等效的),但是,git reset
将选项标记的end
之前的第一个参数视为引用名,而不是文件名。能不能写得更灵活一点?可能为什么不是呢?可能只有开发人员才能确定。@twalberggit reset filename
对未删除的文件很有效。@NeerajB。手册页面的概要说明是git reset[-q][-]…
。如果
参数与
的名称(分支或头或标记或…)匹配,则如果不使用--
,它将执行与您可能想到的不同的操作。这就是它存在的原因。git revert COMMIT\u HASH
fatal: ambiguous argument 'some-deleted-file-path': unknown revision or path not in the working tree.