我使用命令错误地将文件添加到 Git :
git add myfile.txt
我还没跑呢git commit
。我如何撤销这些修改,使这些修改不包含在承诺中?
我使用命令错误地将文件添加到 Git :
git add myfile.txt
我还没跑呢git commit
。我如何撤销这些修改,使这些修改不包含在承诺中?
当前回答
问题未明确提出,原因是:git add
有两个含义:
git rm --cached file
.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 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
用于未承诺更改的更改 :
git reset <file>
这将将文件从当前索引( “ 即将被承诺” 列表) 中删除, 而不更改其它内容 。
取消所有文件的所有更改 :
git reset
在旧的 Git 版本中,上述命令相当于git reset HEAD <file>
和git reset HEAD
或将失效,如果HEAD
未定义(因为你尚未在仓库中做出任何承诺)或模糊(因为你创建了一个分支,称为:HEAD
这是你不该做的蠢事在Git 1.8.2中更改。,所以在现代版本的 Git 中,你可以使用上面的命令,甚至在你第一次做出承诺之前:
当您在历史中没有任何承诺时, “ 将重置” (没有选项或参数) 用于错误退出, 但它现在给了您一个空索引( 匹配不存在的重置, 您甚至没有在 ) 。
文 件:git 重设
只是类型git reset
它将复返,犹如你从未打过字一样。git add .
自从你最后一次承诺之后,你一定要保证你以前的承诺。
在您启动一个新工程时, 避免这个棘手问题的方法 :
git init
.吉特让事情很难办git reset
如果你没有任何承诺,如果你没有承诺。如果你为了拥有一个承诺而创建了一个小小的初始承诺,你可以在此之后git add -A
和git reset
为了让一切都好,你想多少次就多少次
这种方法的另一个优点是,如果你以后遇到一连串的麻烦, 需要刷新你所有的文件, 这很容易:
如果您想要还原最后一个任务, 但仍要保留在任务中本地作出的更改, 请使用此命令 :
git reset HEAD~1 --mixed