Git回滚

一、没有push --- reset

只:add ,commit,没有 push

reset
git reset [ --mixed | --soft | --hard ]

  • --mixed

    • 会保留源码,只是将git commit和index 信息回退到了某个版本.
    • git reset 默认是 --mixed 模式 ,git reset --mixed 等价于 git reset
  • --soft

    • 保留源码,只回退commit 信息到某个版本.不涉及index的回退,如果还需要提交,直接commit即可.
  • --hard

    • 源码也会回退到某个版本,commit和index 都回回退到某个版本。
    • 注意,这种方式是改变本地代码仓库源码
$ git reset [ --mixed | --soft | --hard ] commit(想要回滚到的某个节点的commit号)

二、已经push --- revert

已经 push 到线上仓库,需要同时回退线上仓库和本地代码。

revert

  • git revert 命令要求工作树必须是干净的.

  • git revert 用一个新提交来消除一个历史提交所做的任何修改.

revert 之后你的本地代码会回滚到指定的历史版本,这时你再 git push 既可以把线上的代码更新。

revert 使用,需要先找到你想回滚版本唯一的commit标识代码,可以用 git log 或者在adgit搭建的web环境历史提交记录里查看.

$ git revert c011eb3c20ba6fb38cc94fe5a8dda366a3990c61
# 通常,前几位即可
$ git revert c011eb3

git revert:是用一次新的commit来回滚之前的commit,
git reset:是直接删除指定的commit

看似达到的效果是一样的,其实完全不同.

  • 第一: 如果你已经push到线上代码库, reset 删除指定commit以后,你git push可能导致一大堆冲突,但是revert 并不会。

  • 第二:如果在日后现有分支和历史分支需要合并的时候,reset 恢复部分的代码依然会出现在历史分支里。但是revert 方向提交的commit 并不会出现在历史分支里。

  • 第三:reset 是在正常的commit历史中,删除了指定的commit,这时 HEAD 是向后移动了,而 revert 是在正常的commit历史中再commit一次,只不过是反向提交,他的 HEAD 是一直向前的.

参考:git reset revert 回退回滚取消提交返回上一版本

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • git常用命令 GIT常用命令备忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章阅读 12,784评论 1 26
  • Git是目前最流行的版本管理系统,也是最先进的分布式版本控制系统(distributed version cont...
    pro648阅读 11,092评论 1 17
  • 持续二年的《金星秀》停播了, 有争议、有认可 但同时也留下了很多戳心的话。 金星总是毒舌又犀利 残酷地剖析生活 早...
    心灵约定阅读 4,183评论 0 1
  • 有些路啊,终究还是要自己走。别人可以给你加油助威,别人可以陪在你身边,别人甚至可以在关键时刻拉你一把,可是终究不能...
    苗青_三月阅读 4,177评论 1 6
  • 早上7点我晨跑回来,洗完澡后来到厨房准备给自己泡一杯咖啡。 安静的厨房,伴随着手摇磨豆机的转动声,咖啡豆磨成粉末过...
    瞎投资阅读 3,114评论 0 0

友情链接更多精彩内容