我使用 git 附件来管理大量的视频文件。而不是打字,
git annex add .
我设法,
git add .
现在我得到了一个巨大的回购。如何从 git 中删除文件(已经推送到其他 4 个 repos)重新添加附件。我还需要从 .git 目录中删除它们并使用 git 附件重新添加它们?
我在互联网上的某个地方读到了用户Rhubarb写的这个答案
你需要 :
git rm --cached <added_file_to_undo>
因为 :
当我是新手时,我第一次尝试
git reset .
(撤消我的整个初始添加),只是为了得到这个(不是那么)有用的信息:
fatal: Failed to resolve 'HEAD' as a valid ref.
事实证明,这是因为 HEAD ref(分支?)直到第一次提交之后才存在。也就是说,如果你的工作流程像我的一样,你会遇到和我一样的初学者问题:
cd 到我伟大的新项目目录来试用 Git,新的热点
git init
git add .
git status
...很多废话卷轴...
=>该死的,我不想添加所有这些。
google "undo git add"
=> 找到堆栈溢出 - 耶
git reset .
=> 致命:无法将“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 help rm 关于 --cached 不会破坏任何东西(如果我拼写错误怎么办)之前,我把所有东西都压缩到了一个安全的地方。
rm
您可以使用以下--cached
标志从 git 存储库中删除文件,而无需从磁盘中删除它们:
git rm --cached file.zip
您还可以删除整个文件夹:
git rm -r --cached folder