好的 - 所以我有一个人(在学校项目中 - 不要惊慌)提交一个完整的 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.git到 https://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 提交。
一切从克隆开始……