情况:我有一个Git存储库,索引中已经有文件。我修改了几个文件,打开Git,用“Git add”把这些文件添加到我的暂存区。

问:如何从暂存区删除其中一个文件,但不从索引中删除它,或撤消对文件本身的更改?


当前回答

如果您只是想删除文件更改的子集,您可以使用:

git reset -p

or

git reset -p <file_name>

这个命令基本上与git add -p相反:它只会从暂存区域删除所选的更改。我发现它在“删除”我错误添加的东西时非常有用。

其他回答

如果我理解正确,您只是想“撤消”为该文件所做的git添加。

如果需要从暂存区域删除单个文件,请使用

git重置HEAD—<文件>

如果需要从暂存区域删除整个目录(文件夹),请使用

git重置HEAD——<directoryName> . txt

我们将保留您的修改。当您运行git status时,文件将再次显示为已修改但尚未登台。

详见git重置手册页。

git rm --cached FILE

,

git rm -r --cached CVS */CVS

Git重置<文件>

无论您是否有任何以前的提交。

如果您只是想删除文件更改的子集,您可以使用:

git reset -p

or

git reset -p <file_name>

这个命令基本上与git add -p相反:它只会从暂存区域删除所选的更改。我发现它在“删除”我错误添加的东西时非常有用。

我的示例:

$ git status
On branch feature/wildfire/VNL-425-update-wrong-translation
Your branch and 'origin/feature/wildfire/VNL-425-update-wrong-translation' have diverged,
and have 4 and 1 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    modified:   ShopBack/Source/Date+Extension.swift
    modified:   ShopBack/Source/InboxData.swift
    modified:   ShopBack/en.lproj/Localizable.strings

你们可能注意到了

> Changes to be committed:
>       (use "git reset HEAD <file>..." to unstage)