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

git add myfile.txt

我还没有执行 git 承诺 。 我如何撤销此操作, 使这些更改不被包含在承诺中 ?


当前回答

对于特定文件 :

git 重置我的檔案. txt git 檢查我的檔案. txt

对于所有添加的文件 :

git 重新设置. git 检查退出 。

注意: 检出将文件的代码更改, 并移动到上次更新( 承诺) 状态。 重置不会更改代码; 它只是重置信头 。

其他回答

您想要 :

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 status

Git会告诉你什么是舞台,等等, 包括关于如何解除舞台的指示:

use "git reset HEAD <file>..." to unstage

我发现吉特做的相当不错 裸体我做正确的事情 在这样的情况下。

注:最近Git版本(1.8.4.x)更改了此电文:

(use "git rm --cached <file>..." to unstage)
git add -A

用于将所有文件添加到您的承诺( 阶段) 。

git reset

是“ git 添加 - A” 命令的对面。它会删除所有要执行的分阶段文件( 手段已准备就绪 ) 。

类似地,要添加一个特定文件来承诺我们使用 Git 添加 < filename> 的方式相同, 在 unstage( 或重置) 上添加一个我们使用 git 添加的具体文件, 我们使用 git 重置 < filename > 。

git 重置与 git 添加完全相反 。

只要键入 git 重置, 它就会返回, 并且它就像您自上次承诺以来从未键入过 git 添加 。 请确认您以前已经承诺过 。

如上文所述,从中转区删除新文件(仅在出现新文件的情况下):

git rm --cached FILE

使用 rm -- -- 刻录仅用于新文件不小心添加 。