删除意外Git提交

时间:2013-07-30 19:17:38

标签: git git-annex

我使用git附件来管理大量的视频文件。而不是打字,

git annex add .

我设法,

git add .

现在我结束了巨大的回购。如何从git中删除文件(已经推送到其他4个repos)重新添加附件。我还需要从.git目录中删除它们并使用git annex?

重新添加它们

2 个答案:

答案 0 :(得分:1)

我在用户Rhubarb

写的网上某处读到了这个答案

你需要:

git rm --cached <added_file_to_undo>

因为:

当我是新手时,我首先尝试了

git reset .

(撤消我的整个初始添加),只是为了得到这个(不那么)有用的消息:

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

事实证明这是因为HEAD ref(branch?)直到第一次提交后才存在。也就是说,如果你的工作流程像我一样,你会遇到和我一样的初学者问题:

cd到我的新项目目录,尝试Git,新的热点

git init

git add .
git status

......很多废话卷轴......

=&GT;该死的,我不想加上所有这些。

google "undo git add"

=&GT;找到Stack Overflow - yay

git reset .

=&GT;致命:无法将“HEAD”解析为有效的参考号。

进一步证明,在邮件列表中存在一个针对此无益的错误。

并且正确的解决方案就在Git状态输出中(是的,我把它作为'废话掩盖了)

...
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
...

解决方案确实是使用git rm --cached FILE。

请注意此处其他地方的警告 - git rm会删除文件的本地工作副本,但如果使用--cached则不会删除。这是git help rm的结果:

- cached使用此选项仅从索引中取消暂存和删除路径。将保留工作树文件,无论是否已修改。

我继续使用

git rm --cached。 删除所有内容并重新开始。虽然没有工作,因为虽然添加。是递归的,结果是rm需要-r来递归。叹息。

git rm -r --cached。 好的,现在我回到了我开始的地方。下次我要使用-n进行干运行,看看会添加什么:

git add -n .

我把所有东西都拉到一个安全的地方,然后相信git帮助rm关于--cached没有破坏任何东西(如果我拼错了怎么办)。

答案 1 :(得分:0)

您可以使用带有rm标记的--cached从git repo中删除文件而不将其从磁盘中删除:

git rm --cached file.zip

您还可以删除整个文件夹:

git rm -r --cached folder