---GITHow 如何undo一个已经被push到上游服务器的commit

原文:http://christoph.ruegg.name/blog/2010/5/5/git-howto-revert-a-commit-already-pushed-to-a-remote-reposit.html

文章很好啊: 

重点总结:

       <-> 不影响历史的情况:

        1. 小的错误就立即在本地更改,然后提交,push就ok了,

        2.  git revert commit_id

其中commit_id可以是历史的任意一个id,而且生成一个这个id相反的更改并且自动commit,自动生成log,push后就完成了。

     <二> 修改历史的情况:(在清除敏感信息的情况下有用)

        1.  清除最近一次commit:

              a) 直接修改上游服务器上的数据:
                   git push mathnet +dd61ab32^:master  (mathnet 指向上游服务器)

             b) 本地修改后push的方法:
                        git reset HEAD^ --hard
                        git push mathnet -f

        2. 清除最近一次的上一次commit(任意一个commit都可以)

               git rebase -i dd61ab32^  (dd61ab32 是任意的一次commit) 
               然后会弹出用vi编辑器打开的修改里表,用dd删除不应出现的更改行,然后:wq退出完成更改
              git push mathnet -f

        3. 修正打字

 

Note:-f 和 前面命令里面的+号 是a forced non-fastforward push的意思。

 

转载于:https://www.cnblogs.com/bzhao/archive/2012/10/24/2737533.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值