情况:我有一个Git存储库,索引中已经有文件。我修改了几个文件,打开Git,用“Git add”把这些文件添加到我的暂存区。
问:如何从暂存区删除其中一个文件,但不从索引中删除它,或撤消对文件本身的更改?
情况:我有一个Git存储库,索引中已经有文件。我修改了几个文件,打开Git,用“Git add”把这些文件添加到我的暂存区。
问:如何从暂存区删除其中一个文件,但不从索引中删除它,或撤消对文件本身的更改?
当前回答
如果您对许多跟踪文件进行了更改,但只想运行其中的一些文件,则执行
转到添加 。
并不总是有利的(或推荐的)——因为它会阶段性地跟踪所有的文件(在某些情况下,您希望仅将更改保留给自己,而不希望将它们阶段性地转移到远程存储库)。
做一堆也不理想
git add路径/to/file1路径/to/file2
如果你有很多嵌套的目录(这是大多数项目的情况)-很烦人
这就是Git GUI有帮助的时候(可能是我唯一一次使用它)。只要打开Git GUI,它就会显示阶段性和非阶段性文件部分。从要取消staging的部分中选择文件并按下
Ctrl+U (windows)
让他们退出舞台。
其他回答
git reset filename.txt
如果在filename.txt中有修改,则是您错误地将其添加到stage,并且希望从staging中删除该文件,但又不想丢失所做的更改。
如果您对许多跟踪文件进行了更改,但只想运行其中的一些文件,则执行
转到添加 。
并不总是有利的(或推荐的)——因为它会阶段性地跟踪所有的文件(在某些情况下,您希望仅将更改保留给自己,而不希望将它们阶段性地转移到远程存储库)。
做一堆也不理想
git add路径/to/file1路径/to/file2
如果你有很多嵌套的目录(这是大多数项目的情况)-很烦人
这就是Git GUI有帮助的时候(可能是我唯一一次使用它)。只要打开Git GUI,它就会显示阶段性和非阶段性文件部分。从要取消staging的部分中选择文件并按下
Ctrl+U (windows)
让他们退出舞台。
如果我理解正确,您只是想“撤消”为该文件所做的git添加。
如果需要从暂存区域删除单个文件,请使用
git重置HEAD—<文件>
如果需要从暂存区域删除整个目录(文件夹),请使用
git重置HEAD——<directoryName> . txt
我们将保留您的修改。当您运行git status时,文件将再次显示为已修改但尚未登台。
详见git重置手册页。
在2.23版本之后,Git引入了Git恢复命令,你可以使用它来恢复。引用官方文件:
类中的某些内容恢复工作树中的指定路径 恢复源。如果跟踪的路径在恢复中不存在 源,它将被删除以匹配源。 该命令还可以用于恢复索引中的内容 ——staging,或者使用——staging——worktree恢复工作树和索引。
因此,您可以调用git restore——staging <path>并取消该文件,但同时保留所做的更改。请记住,如果文件没有暂存,则会丢失对其所做的所有更改。
你想要的:
影响到单个文件 从暂存区删除文件 不能从索引中删除单个文件 不要撤消更改本身
答案是
git reset HEAD file_name.ext
or
git reset HEAD path/to/file/file_name.ext