如何在 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 allunstage all 来解决我的问题。删除现已消失。

【讨论】:

这与其说是一种解决方案,不如说是一种后门解决方法。就 git 本身而言,我们不知道你刚刚做了什么。 @matt 我不知道 SourceTree 在后台在做什么。 我知道,但出于这个原因,这不是一个有用的答案。 您的 IDE 似乎会在您每次放回文件时一直注意到它,并一直在重新删除它,因为您告诉 IDE 您希望将其删除。【参考方案2】:

顺序:

git checkout -- webpack.config.js
git add webpack.config.js

应该够了

【讨论】:

但这没有用

以上是关于如何在 git 中取消暂存已删除的文件? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 Git 中仅暂存已修改文件的更简单方法(未删除)

JGit Java Git 库取消暂存文件

如何 Git 取消暂存所有暂存文件? [复制]

git常用操作合集

Git之同步代码

10-git-取消暂存的文件