如何在 git 中取消暂存已删除的文件? [关闭]
Posted
技术标签:
【中文标题】如何在 git 中取消暂存已删除的文件? [关闭]【英文标题】:How to unstage a deleted file in git? [closed] 【发布时间】:2021-01-19 16:14:01 【问题描述】:我做了git reset HEAD -- "*user*"
(从暂存区域中删除所有“用户”文件)但现在 git 不知何故认为我想删除一个完全不同的文件,我最近什至没有碰过(该文件还在我的文件夹)。 git status
现在显示给我:
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
deleted: webpack.config.js
我不想删除这个文件。所以我想从舞台和索引中删除删除。
我尝试了我在 *** 上找到的以下所有命令,但这些命令都不起作用...(我当然在每个命令后检查了 git status
,但删除仍然存在):
git restore --staged webpack.config.js
git restore webpack.config.js
git reset HEAD webpack.config.js
git reset -- webpack.config.js
git checkout HEAD -- webpack.config.js
git checkout HEAD webpack.config.js
git checkout -- webpack.config.js
git add webpack.config.js
git rm --cached webpack.config.js
在某一时刻,我还尝试了 git checkout .
,它删除了我所有未暂存的更改...(我能够通过为我的 IDE 中的每个文件发出 undo
命令来恢复更改)。
我还尝试使用 SourceTree 取消暂存删除:
但这也行不通。
那么从暂存区删除文件的正确方法是什么(但保留更改)?
【问题讨论】:
你能不能不简单地再次暂存那个未暂存的文件?看起来它已经创建并添加,然后暂存,所以取消暂存是为了 git 从技术上删除。 @TheFool 我刚刚做了:git add webpack.config.js
- 仍然被删除。
我想你想说的是git rm --cached
。我不确定你从哪里得到这个 reset
用法。
所以你说你已经尝试了一堆命令,但没有一个成功.. git
有没有说什么?
@matt 我刚刚做了git rm --cached webpack.config.js
,然后该文件还出现在未跟踪的文件下,但在舞台区域中仍然被删除。所以我也再次尝试git add webpack.config.js
,它已经在未跟踪的文件下,但它仍然显示为已删除。
【参考方案1】:
我可以通过在 SourceTree 中再次单击 stage all
和 unstage all
来解决我的问题。删除现已消失。
【讨论】:
这与其说是一种解决方案,不如说是一种后门解决方法。就 git 本身而言,我们不知道你刚刚做了什么。 @matt 我不知道 SourceTree 在后台在做什么。 我知道,但出于这个原因,这不是一个有用的答案。 您的 IDE 似乎会在您每次放回文件时一直注意到它,并一直在重新删除它,因为您告诉 IDE 您希望将其删除。【参考方案2】:顺序:
git checkout -- webpack.config.js
git add webpack.config.js
应该够了
【讨论】:
但这没有用以上是关于如何在 git 中取消暂存已删除的文件? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章