如何从Git的登台区域中删除单个文件,但是不能从索引中删除它,或者撤销对文件本身的更改?
情况:我有一个已经在索引中的文件的Git仓库。 我修改了几个文件,打开Git并用“git add”将这些文件添加到我的临时区域。
问题:如何从暂存区域中删除其中一个文件,但是不能将其从索引中删除,或撤消文件本身的更改?
如果我正确地理解了这个问题,你只需要“撤销”为该文件完成的git add
。
如果是这样的话,那么git reset HEAD -- <file>
将完成这项工作。 如果您需要从暂存区域中删除整个目录(文件夹),请使用
git reset HEAD -- <directoryName>
你的修改将被保留。 当你运行git status
,文件会再次显示为已修改,但尚未暂存。
有关详细信息,请参阅git reset
手册页 。
git rm --cached FILE
,
git rm -r --cached CVS */CVS
git reset <file>
无论您是否有任何以前的提交,
所以,对Tim Henigan的回答略作调整:你需要在文件名之前使用。 它看起来像这样:
git reset HEAD -- <file>
如果你想删除某些模式下的文件,而且你正在使用git rm --cached
,那么你也可以使用file-glob模式。
看到这里 。
如果您只想删除文件的一部分更改,您可以使用:
git reset -p
要么
git reset -p <file_name>
这个命令基本上与git add -p
相反:它只会从暂存区域中删除所选的更改。 我发现它是非常有用的“未加载”,我误添了一些东西。
您需要在文件的目录中,然后在terminal中input以下内容
git reset HEAD .
假设你只需要重置一个文件。
你要:
-
影响到单个文件
-
从暂存区域删除文件
-
不从索引中删除单个文件
-
不要撤消更改本身
和解决scheme是
git reset HEAD file_name.ext
要么
git reset HEAD path/to/file/file_name.ext
要立即停止所有操作,请运行此命令
git reset HEAD -- .
git checkout -- <file>
它完美地从分段区域移除文件
就我而言,我是这么做的
git checkout -- FILE