我使用命令错误地将文件添加到 Git :

git add myfile.txt

我还没跑呢git commit。我如何撤销这些修改,使这些修改不包含在承诺中?


当前回答

如果您想要还原最后一个任务, 但仍要保留在任务中本地作出的更改, 请使用此命令 :

git reset HEAD~1 --mixed

其他回答

请注意,如果您没有指定修改,则必须包含一个分隔符。例如,我的控制台:

git reset <path_to_file>
fatal: ambiguous argument '<path_to_file>': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions

git reset -- <path_to_file>
Unstaged changes after reset:
M    <path_to_file>

(1.7.5.4版总版)

还有一个互动模式:

git add -i

选择 选项 3 到 取消 添加文件 。 在我的情况中, 我通常要添加多个文件, 用交互模式, 您可以使用这样的数字来添加文件 。 这将除 4: 1, 1, 2, 3, 和 5 以外, 全部要用这个数字来添加文件 : 1, 2, 3 和 5

要选择一个序列, 只要类型 1-5 就可以从 1 到 5 全部取出 。

Git 中转文件

您可以使用g基基边命令或图形用户界面 Git 。

单个文件

git reset File.txt

多个文件

git reset File1.txt File2.txt File3.txt

示例示例示例示例

假设你添加了Home.js 居家公居, 项目表.js, 最新情况.js犯错,

Enter image description here

并要撤消/重置

git reset src/components/home/Home.js src/components/listItem/ListItem.js src/components/update/Update.js

Enter image description here

同一例子使用Git 图形界面

git gui

打开窗口。不检查您的文件分阶段变化(将承诺)

Enter image description here

问题未明确提出,原因是:git add有两个含义:

  1. 添加 a新文件到集结区,然后撤消git rm --cached file.
  2. 添加 a修改后撤消区域文件,然后用git reset HEAD file.

如果有疑问,使用

git reset HEAD file

因为它在两种情况下都做了预期的事

警告 :如果有的话git rm --cached file档案中修改后(一个之前在存储库中存在的文件) , 然后文件将会在git commit! 它将仍然存在于您的文件系统中, 但是如果有其他人拉动您的承诺, 文件将会从他们的工作树上删除 。

git status将会告诉你,如果文件是新文件修改后:

On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   my_new_file.txt
    modified:   my_modified_file.txt

撤消撤消已经添加的文件使用 Git 很容易。 用于重设myfile.txt已经添加的,使用:

git reset HEAD myfile.txt

解释:

启动不需要的文件后,要撤消文件,您可以完成git reset. Head是在本地文件中您文件的头,而最后一个参数是您文件的名称。

我为你们创建了以下图像中的步骤, 更详细地介绍了这些步骤, 包括在这些情况下可能发生的所有步骤:

git reset HEAD file