情况
备份
万事先备份.
git checkout -b masterbackup
获取服务器最新提交
git fetch
这样可以将本地的 origin/master 获取到服务器最新的提交.
重建 master 分支
重建方式是, 删除本地 master, 并重新从 origin/master 创建 master
git branch -D master 注意此时在 masterbackup 分支
git checkout -b master origin/master
重做 C1, 并修改提交
git cherry-pick C1
注意此处得到的并不是 C1,应为 C1'
git rm 110M.a
删除了无法提交的文件
我这里采用了 split 的方法将其分割为几个小文件, 其他人只需要简单合并这几个文件即可
git add 110M.a_PART1 110M.a_PART2 110M.a_PART3
git commit –amend
这个命令可以修改上次提交, 将已经加入到 stage 区的修改合并到上次提交(即 C1') 注意这个命令,万万不可再 push 后使用. (其实是不推荐 push 后使用)
这样我们就修复了这个无法提交的文件了.
同样重做 C4, C5
git cherry-pick C4
git cherry-pick C5
没有什么好说的
推送, 清理战场
git push origin master
git branch -D masterbackup
搞定!
Date: 2015-12-22