我使用命令错误地将文件添加到 Git :
git add myfile.txt
我还没有执行 git 承诺 。 我如何撤销此操作, 使这些更改不被包含在承诺中 ?
我使用命令错误地将文件添加到 Git :
git add myfile.txt
我还没有执行 git 承诺 。 我如何撤销此操作, 使这些更改不被包含在承诺中 ?
当前回答
要重置特定文件夹( 及其子文件夹) 中的每一文件, 您可以使用以下命令 :
git reset *
其他回答
您可以在 Git 2. 23 版本后使用此命令 :
git restore --staged <filename>
或者,你可以使用这个命令:
git reset HEAD <filename>
您想要 :
git rm --cached <added_file_to_undo>
理由:
当我刚开始做这个的时候,我第一次尝试
git reset .
(取消我最初添加的全部内容), 只是为了得到这个(不是这样的)有用信息:
fatal: Failed to resolve 'HEAD' as a valid ref.
结果发现,这是因为 HEAD ref (blanch?) 直到第一次承诺之后才存在。 这就是说,你会遇到跟我一样的初学者的问题, 如果你的工作流程像我的一样, 像是:
cd to my great new project directory to try out Git, the new hotness git init git add . git status ... lots of crap scrolls by ... => Damn, I didn't want to add all of that. google "undo git add" => find Stack Overflow - yay git reset . => fatal: Failed to resolve 'HEAD' as a valid ref.
邮件列表上记录了一个窃听器 记录了这个无益之处
正确的解决方案就在 Git 状态输出中( 是的, 我将它伪装成“ 废话 ” ) 。
... # 将要执行的修改 : # (使用“ git rm -- cashed < file >...” 来取消)...
事实上,解决办法是使用Git rm -- cashed FILE。
在此注意其它处的警告 - git rm 删除您本地的文件工作副本, 但如果您使用 -- cashed , 则不使用。 这是 Git help rm 的结果 :
--cached 使用此选项来卸载和从索引中删除路径。 工作树文件, 不论是否修改, 都会被左移 。
我开始使用
git rm --cached .
以删除所有内容并重新开始。 虽然没有成功, 因为添加. 是循环的, 结果显示 Rm 需要 - r 循环。 叹息 。
git rm -r --cached .
好了,我现在回到我开始的地方。下次我要用...
git add -n .
我把所有东西都拉到一个安全的地方,
运行运行中
git gui
,然后手动删除所有文件,或者选择全部文件,然后从执行按钮中单击非阶段。
如果您想要还原最后一个任务, 但仍要保留在任务中本地作出的更改, 请使用此命令 :
git reset HEAD~1 --mixed
如上文所述,从中转区删除新文件(仅在出现新文件的情况下):
git rm --cached FILE
使用 rm -- -- 刻录仅用于新文件不小心添加 。