【问题标题】:How to remove files from git staging area?如何从 git 暂存区中删除文件?
【发布时间】:2013-11-12 21:04:49
【问题描述】:

我在本地仓库中对我的一些文件进行了更改,然后我做了git add -A,我认为这向暂存区添加了太多文件。如何删除暂存区的所有文件?

完成后,我将手动执行git add "filename"

【问题讨论】:

  • 希望你正在寻找这个:stackoverflow.com/questions/1505948/…
  • git status 已经告诉您如果要取消暂存文件该怎么做。
  • @MichaelFoukarakis git status 如果您想取消暂存整个目录(如果终端充斥着输出(例如 node_modules)),那么它就没有帮助
  • 将来,您可能希望熟悉git add -pgit add --patch(它们是相同的),而不是全部添加。该标志允许您以交互方式选择要暂存的文件或单个更改——然后您可以更精细地处理提交中包含的工作。

标签: git


【解决方案1】:

您可以使用以下方法从索引中取消暂存文件

git reset HEAD -- path/to/file

就像git add 一样,您可以按目录等递归地取消暂存文件,因此要一次取消暂存所有内容,请从存储库的根目录运行:

git reset HEAD -- .

此外,为了将来参考,git status 的输出将告诉您将文件从一种状态移动到另一种状态所需运行的命令。

【讨论】:

  • $ git reset HEAD -- . 产生 fatal: Failed to resolve 'HEAD' as a valid ref. 请注意,我从未做过任何提交;这是git init之后的第一个git add
  • 你也可以使用git reset @
  • @alex 比普通的git reset好吗?
  • @AntonyHatchkins @HEAD 的同义词。
  • 哪个更好 git reset 或 git restore --staged
【解决方案2】:

使用

git reset

取消暂存所有暂存文件。

【讨论】:

  • 请问这与git reset HEAD -- 有何不同,或者它只是执行相同操作的更简洁的方式?
  • @ProNotion Reset 默认使用HEAD。你的git reset HEAD -- 中那些-- 的目的是什么?
  • @AntonyHatchkins 它后面应该跟一个句号(句点),并且取自已接受答案中的示例。
  • @ProNotion 对不起,我误解了你。 git reset HEAD -- . 不同之处在于它只重置当前目录及以下目录中的文件,而git reset 重置项目中的所有文件。
【解决方案3】:

如果你已经提交了一堆不需要的文件,你可以取消暂存它们告诉 git 将它们标记为已删除(而不是实际删除它们)

git rm --cached -r .

--cached 告诉它从暂存和索引中删除路径而不删除文件本身,-r 递归地对目录进行操作。然后,您可以git add 任何您想要跟踪的文件。

【讨论】:

  • 我猜是“git rm -- .”
  • 有一个关于不使用“git rm --”删除文件的致命错误。
  • @AlexMills 我更新了我的答案,提到了rm 取消暂存所有文件的实际选项。
  • 我在一个像这样的单一文件上试过这个:“git rm --cached my/file.java”,我看到该文件仍在暂存区域,但已删除! @Max 当您运行此命令时,您的文件实际上是被删除还是未暂存?如果您不是在寻找那种行为,我会回答。
  • @OrwellHindenberg 感谢您指出这一点! --cached 真的是停止跟踪你已经提交的文件。所以文件实际上并没有被删除,但 git 认为它是。我已经在我的回答中澄清了这一点。
【解决方案4】:

现在在 v2.24.0 建议

git restore --staged .

取消暂存文件。

【讨论】:

  • 感谢您的精彩相关回答。
  • 这是 git 本身推荐的用于取消暂存文件的方法
【解决方案5】:

你可以使用

git reset HEAD

然后添加您想要的特定文件

git add [directory/]filename

【讨论】:

  • 如果文件夹过多,git status 会告诉您工作目录干净 - 谎言! git clean -df 完成了这项工作,谢谢。
  • 请注意git clean -df 将永久删除文件。在类 UNIX 系统上,它会调用 unlink(),您删除的文件将无法恢复。
  • OP 询问是否取消暂存文件。你建议他删除文件。我建议您在回答之前先了解暂存区。
  • 这个问题在我回答几个月后被重新编辑。这可能会使某些答案对该案例无效。
  • 好的。缩短和清洁。
【解决方案6】:

使用以下命令从暂存区域中删除特定文件:

git restore --staged <individual_file>

或使用以下方法删除当前暂存的所有文件:

git restore --staged .

在您的 git bash 终端中,将文件添加到暂存区域后,您可以运行 git status,该命令会显示在当前暂存文件上方:

【讨论】:

    【解决方案7】:

    要从暂存区删除所有文件,请使用 -
    git reset
    要删除特定文件,请使用 -
    git reset "File path"

    【讨论】:

    • 感谢您提供的节省时间的提示,我可以只删除其中一个文件
    【解决方案8】:

    很简单:

    1. 检查当前目录中任何文件的当前状态,是否已暂存:

      git status

    2. 暂存任何文件:

      git add . 用于当前目录中的所有文件

      git add &lt;filename&gt; 用于特定文件

    3. 取消暂存文件:

      git restore --staged &lt;filename&gt;

    【讨论】:

      【解决方案9】:

      如其他答案所述,您应该使用git reset。这将撤消git add -A 的操作。

      注意: git reset 等同于 git reset --mixed 这样做

      重置索引但不重置工作树(即,更改的文件被保留但未标记为提交)并报告尚未更新的内容。这是默认操作。 [git reset ]

      【讨论】:

      • .. 要从暂存区删除 single 文件,您可以执行 git reset filenameToNotCommit
      【解决方案10】:

      如果不需要的文件被添加到暂存区域但尚未提交,那么简单的重置就可以完成这项工作:

      $ git reset HEAD file
      # Or everything
      $ git reset HEAD .
      

      要仅删除当前工作目录中未暂存的更改,请使用:

      git checkout -- .
      

      【讨论】:

        【解决方案11】:

        使用“git reset HEAD &lt;file&gt;...”取消暂存文件

        ex : 取消暂存所有文件

        git reset HEAD .
        

        取消暂存一个文件

        git reset HEAD nameFile.txt
        

        【讨论】:

          【解决方案12】:

          使用

          git reset HEAD
          

          这将从暂存区中删除所有文件

          【讨论】:

            【解决方案13】:

            您可以通过以下几种方式重置暂存区:

            1. 重置 HEAD 并添加所有必要的文件以再次签入,如下所示:

               git reset HEAD ---> removes all files from the staging area
               git add <files, that are required to be committed>
               git commit -m "<commit message>"
               git push 
              

            【讨论】:

            • 这个答案与现有的六个答案有何不同?
            【解决方案14】:

            我尝试了所有这些方法,但没有一个对我有用。我使用rm -rf .git 从本地存储库中删除了.git 文件,然后再次执行git initgit add 以及常规命令。它奏效了。

            【讨论】:

            • 阅读 git 文档通常比遵循 xkcd.com/1597 的建议更有价值;)
            • 也许您在特定情况下存在完整性问题,这是剩下的选项,但不建议这样做。
            • 请不要这样做,你会毁掉你的整个 git repo。
            猜你喜欢
            • 2023-03-17
            • 1970-01-01
            • 2010-12-03
            • 2019-11-09
            • 1970-01-01
            • 1970-01-01
            • 2021-11-18
            相关资源
            最近更新 更多