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

git add myfile.txt

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


当前回答

在您启动一个新工程时, 避免这个棘手问题的方法 :

  • 为您的新工程创建主目录 。
  • 运行运行中git init.
  • 现在创建一个. gitignore 文件( 即使它是空的 ) 。
  • 提交您的. gitignore 文件 。

吉特让事情很难办git reset如果你没有任何承诺,如果你没有承诺。如果你为了拥有一个承诺而创建了一个小小的初始承诺,你可以在此之后git add -Agit reset为了让一切都好,你想多少次就多少次

这种方法的另一个优点是,如果你以后遇到一连串的麻烦, 需要刷新你所有的文件, 这很容易:

  • 检查一下初始承诺。 这将删除全部文件 。
  • 然后再次检查您最近的承诺。 这将使用您当前的行终结设置, 获取您文件的更新副本 。

其他回答

使用*命令一次处理多个文件 :

git reset HEAD *.prj
git reset HEAD *.bmp
git reset HEAD *gdb*

git rm --cached . -r

将“ un- add- add” 添加您从当前目录中添加的所有内容递归到当前目录

要撤销git add, 使用 :

git reset filename

假设我创造了一个新的文件,newFile.txt:

Enter image description here

假设我无意中添加文件git add newFile.txt:

Enter image description here

现在我想撤销此添加, 在承诺之前,git reset newFile.txt:

Enter image description here

您想要 :

git rm --cached <added_file_to_undo>

理由:

当我刚开始做这个的时候,我第一次尝试

git reset .

(取消我最初添加的全部内容), 只是为了得到这个(不是这样的)有用信息:

fatal: Failed to resolve 'HEAD' as a valid ref.

结果发现,这是因为 HEAD ref (blanch?) 直到第一次承诺之后才存在。 这就是说,你会遇到跟我一样的初学者的问题, 如果你的工作流程像我的一样, 像是:

  1. Cd 我伟大的新项目目录 试探Git, 新的热度
  2. git init
  3. git add .
  4. git status

    ...很多垃圾卷轴 通过...

    该死,我不想加上这些

  5. google “ 未跳过 git 添加 ”

    找到堆叠溢出

  6. 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你们不要毁灭任何物,如果我误译了它,