转自:http://blog.csdn.net/brave_heart_lxl/article/details/6651077
工作中有时再使用时git push到远程分支后,会发现有些文件是不想推到远程分支上的,所以想取消上一次的git push操作,然后强推去覆盖远程分支上的信息。
做法如下:
1)先git reset --hard清空工作区上的内容。
2)然后再对工作区更改,如果要删除工作区中的文件,要用git rm 命令,而不要用rm命令。
3)重新git add .,add后记住要用git diff --cached或git status查看工作区的状态,不是什么文件都可以提交的。
4)git commit --amend -m "0.01 version for show",本地已经OK,下一步是强推到远程
5)git push origin +master:master就OK了,如果不小心写成git push origin master:master+,那么恭喜你,远程上又多出了一个master+分支,解决方法很简单,
用git push origin :master+就可以把这个远程分支给冲掉了。
如果是在windows eclipse上已推到远程分支然后发现某个过程文件不该修改的情况,在linux上可以这样做:先用git clone ****.git拉到本地,然后git reset --mixed HEAD^ 退到上次提交号,但是源代码改变保留,用git status可以查看工作区情况,用git add xxxfile 把应该修改的文件加上去,用git checkout xxxfile把本不用修改的文件回退到上一版本,
同样是git commit -m "message" 此处不用--amend,此时本地仓库落后远程一次提交,然后强制推到远程,会用当前仓库把远程刚才错误的提交给覆盖掉。