情况:我有一个Git存储库,索引中已经有文件。我修改了几个文件,打开Git,用“Git add”把这些文件添加到我的暂存区。
问:如何从暂存区删除其中一个文件,但不从索引中删除它,或撤消对文件本身的更改?
情况:我有一个Git存储库,索引中已经有文件。我修改了几个文件,打开Git,用“Git add”把这些文件添加到我的暂存区。
问:如何从暂存区删除其中一个文件,但不从索引中删除它,或撤消对文件本身的更改?
当前回答
git rm --cached FILE
,
git rm -r --cached CVS */CVS
其他回答
如果您只是想删除文件更改的子集,您可以使用:
git reset -p
or
git reset -p <file_name>
这个命令基本上与git add -p相反:它只会从暂存区域删除所选的更改。我发现它在“删除”我错误添加的东西时非常有用。
当你执行git status时,git会告诉你如何取消运行:
Changes to be committed: (use "git reset HEAD <file>..." to unstage).
所以git重置HEAD <文件>为我工作,这些变化没有被触及。
如果我理解正确,您只是想“撤消”为该文件所做的git添加。
如果需要从暂存区域删除单个文件,请使用
git重置HEAD—<文件>
如果需要从暂存区域删除整个目录(文件夹),请使用
git重置HEAD——<directoryName> . txt
我们将保留您的修改。当您运行git status时,文件将再次显示为已修改但尚未登台。
详见git重置手册页。
所以,对Tim Henigan的回答做一个小小的调整:你需要在文件名之前使用——。它看起来是这样的:
git reset HEAD -- <file>
你想要的:
影响到单个文件 从暂存区删除文件 不能从索引中删除单个文件 不要撤消更改本身
答案是
git reset HEAD file_name.ext
or
git reset HEAD path/to/file/file_name.ext