我使用命令错误地将文件添加到 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
其他回答
在源树中,您可以通过 GUI 轻松地做到这一点。您可以检查源树命令用什么来取消文件 。
我创建了一个新的文件, 并将其添加到 Git 中。 然后我用“ 原始树 GUI” 解除了它。 这是结果 :
解除文件 [08/12/ 15 10: 43] git - c diff. mnemonicprefix= false - c c c核心. cootepath= false - creedical. helper= 源树重新设置 -q - 路径/ 到/ 文件/ files/ filename.java
源树用途reset
以卸载新文件。
您想要 :
git rm --cached <added_file_to_undo>
理由:
当我刚开始做这个的时候,我第一次尝试
git reset .
(取消我最初添加的全部内容), 只是为了得到这个(不是这样的)有用信息:
fatal: Failed to resolve 'HEAD' as a valid ref.
结果发现,这是因为 HEAD ref (blanch?) 直到第一次承诺之后才存在。 这就是说,你会遇到跟我一样的初学者的问题, 如果你的工作流程像我的一样, 像是:
git init
git add .
git status
...很多垃圾卷轴 通过...
该死,我不想加上这些
google “ 未跳过 git 添加 ”
找到堆叠溢出
git reset .
致命: 解决“ HEAD” 有效参考失败 。
更进一步发现a 窃听器记录与邮件列表中的无益对比。
正确的解决方案就在 Git 状态输出中( 是的, 我将它伪装成“ 废话 ” ) 。
... # Changes to be committed: # (use "git rm --cached <file>..." to unstage) ...
解决的确是使用git rm --cached FILE
.
请注意这里其他地方的警告-git rm
删除本地文件的工作副本,但否使用-- -- cooked。以下是git help rm
:
--cached 使用此选项来卸载和从索引中删除路径。 工作树文件, 不论是否修改, 都会被左移 。
我开始使用
git rm --cached .
把所有东西都搬走,重新开始。虽然没有成功,因为当add .
循环,结果rm
需要满足的需求-r
来重复。 叹气 。
git rm -r --cached .
好了,现在我回到我开始的地方 下次我再用-n
以进行一个干燥的运行,然后观察将要增加什么:
git add -n .
在信任之前,我把所有东西都拉到一个安全的地方git help rm
关于 The 的--cached
你们不要毁灭任何物,如果我误译了它,
正如其他人在相关问题中所指出的(见A/CN.9/WG.III/WG.II),在这里, 在这里, 在这里, 在这里, 在这里, 在这里, 和在这里现在可以了取消一个单独的文件与:
git restore --staged <file>
和取消所有文件以下列方式写成:
git restore --staged .
git restore
于2019年7月以2.23版本发布。
与--staged
旗帜, 它会恢复索引的内容( 在此询问什么 ) 。
运行时git status
与 Saged 未经发送文件一起, Git 现在建议用这个来解开 Page 文件( 而不是git reset HEAD <file>
在 v2.23 之前使用过。
您可以在 Git 2. 23 版本后使用此命令 :
git restore --staged <filename>
或者,你可以使用这个命令:
git reset HEAD <filename>