【问题标题】:How to unstage a deleted file in git? [closed]如何在 git 中取消暂存已删除的文件? [关闭]
【发布时间】: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

我不想删除这个文件。所以我想从舞台和索引中删除删除。

我尝试了我在 StackOverflow 上找到的以下所有命令,但这些命令都不起作用...(我当然在每个命令后检查了 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,它已经在未跟踪的文件下,但它仍然显示为已删除。

标签: bash git git-bash


【解决方案1】:

我可以通过在 SourceTree 中再次单击 stage allunstage all 来解决我的问题。删除现已消失。

【讨论】:

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

顺序:

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

应该够了

【讨论】:

  • 但这没有用
猜你喜欢
  • 1970-01-01
  • 2012-03-24
  • 2011-05-14
  • 2018-12-18
  • 2014-09-14
  • 2021-11-18
  • 2017-08-26
  • 1970-01-01
  • 2013-11-12
相关资源
最近更新 更多