Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 从“删除所有已删除的文件”;“已更改但未更新”;吉特_Git - Fatal编程技术网

Git 从“删除所有已删除的文件”;“已更改但未更新”;吉特

Git 从“删除所有已删除的文件”;“已更改但未更新”;吉特,git,Git,当我运行git status时,我有一大堆表单行 deleted: dir/file.js 我可以使用git checkout--dir/file.js分别删除其中的每一个,但必须有一种不那么费劲的方法。(是的,我知道我应该首先使用git-rm) [Update:正如Mark在下面指出的,git checkout--实际上还原了一个已删除的文件,而我原以为它从git索引中删除了它。我有点困惑,因为当运行git status时,它会说: use "git checkout -- <f

当我运行
git status
时,我有一大堆表单行

deleted:    dir/file.js
我可以使用git checkout--dir/file.js分别删除其中的每一个,但必须有一种不那么费劲的方法。(是的,我知道我应该首先使用
git-rm

[Update:正如Mark在下面指出的,
git checkout--
实际上还原了一个已删除的文件,而我原以为它从git索引中删除了它。我有点困惑,因为当运行
git status
时,它会说:

use "git checkout -- <file>..." to discard changes in working directory
使用“git签出--…”放弃工作目录中的更改

对我来说,“放弃更改”并不意味着“恢复您删除的文件”,但在git术语中,我认为这是有意义的。]

事实发生后,您仍然可以
git rm
,但如果您愿意,您可以使用
git reset--hard
将所有更改的文件(包括删除的文件)恢复到上一个修订版,是否要提交这些文件的删除? 然后使用


正如rampion所指出的,如果您有很多文件被列为“已删除:”在“已更改但未更新”下,您仍然可以使用
git rm
分期删除工作副本中已删除的文件(例如,在您的情况下,只需
git rm dir/file.js
),我会首先检查
git ls files--deleted
是否生成这些文件的列表,如果是,请使用以下命令删除它们:

git ls-files --deleted -z | xargs -0 git rm

我不明白
checkout
将恢复这些已删除的文件,但您说您应该首先使用
git rm
来删除这些文件。您想将这些文件还原到您的工作树,还是从索引和工作树中删除它们?我也想从索引中删除它们,这就是
git checkout--[filename]
所做的,而
git checkout[filename]
还原文件。这不对,恐怕,
git签出--
中的
--
只是一种确保
被解释为路径而不是分支(或标记或提交)名称的方法。如果
不是分支机构(&c)的名称,那么您提到的两种形式具有相同的效果:它们将文件恢复到索引中的状态。啊,哎呀!感谢您的更正,Mark。“放弃更改”的意思是“撤消我在工作目录中所做的操作”。您正在放弃自上次提交状态以来所做的更改。删除文件是一种更改,ergo checkout将通过还原文件来放弃该更改。为了澄清为什么我更喜欢添加的答案,
git add-u
在这种情况下的问题是,它还将对存储库中的跟踪文件进行任何其他更改,而不仅仅是删除。
拒绝了Dialogik:
中的编辑(注意,这还将对存储库中的跟踪文件进行任何其他更改,而不仅仅是删除-请参阅下面的注释。)我遇到了一个问题,即
git push
挂起一个被删除的大文件,然后是上面的所有内容和更多内容。它不会显示在任何状态日志中。但它仍在继续。如果我在之后继续使用
git rm
,您的答案会解决这个问题吗?
git ls-files --deleted -z | xargs -0 git rm