0

好的 - 所以我有一个人(在学校项目中 - 不要惊慌)提交一个完整的 Eclipse 工作区,其中包含 .class 文件和 .settings/ 目录。我所做的是克隆 repo 并制作一个 .gitignore 文件并发出:

$ git reset --soft HEAD^
$ ... unstaged all files and added .gitignore and all files that it filtered in ...

然后我尝试了:

 $ git commit -c d1cf2d8173234b444c601d5e294a5cf6d790fa2c

其中 SHA 是在线提​​交的 SHA。它不会让我推动:

推送到https://USERNAME@git.assembla.com/PROJECT.githttps://USERNAME@git.assembla.com/PROJECT.git ![rejected]
master -> master (non-fast-forward) error: failed to push some refs to 'https://USERNAME@git.assembla.com/PROJECT.git' 为了防止您丢失历史记录,非快速-前向更新被拒绝 在再次推送之前合并远程更改(例如“git pull”)。有关详细信息,请参阅“git push --help”的“关于快进的说明”部分。

我的问题是我应该怎么做?

那么在这种情况下我应该如何删除提交。不要警告我不应该这样做 - 在这种情况下,编辑历史记录是非常可接受、推荐和必要的(我想回收在线回购中的空间)。另外-我并不担心如何强制推送-我想要更简单/更清洁的方式来替换远程 HEAD 提交

一切从克隆开始……

4

2 回答 2

1

除了必须让远程仓库管理员允许您回退“主”分支之外,请参阅http://help.github.com/remove-sensitive-data/,特别是“清理和回收空间”部分。

在像您这样的情况下,使用新遥控器重新开始并让远程管理员完全删除旧遥控器通常是最简单的。:-)

于 2012-04-29T22:34:40.947 回答
1

您可以在 push 语句中使用 --force 标志,但如果其他人使用相同的 repo,这是有风险的。否则,您可能希望更新回远程头并使用 Git 还原。

于 2012-04-29T12:48:28.143 回答