• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程技巧 > 简单谈谈Git中的回滚操作

简单谈谈Git中的回滚操作

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-12

通过本文主要向大家介绍了git 回滚,git 代码回滚,git怎么回滚,git 回滚版本,git 回滚提交等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

首先介绍下场景

首先,一定要想清楚,自己想干什么。

找redis源码作为例子,查看所在的分支git branch

 3.0
 3.2
* unstable
</div>

取前5条commit看看

git log --pretty=format:"%h - %an, %ar : %s" -5
</div>
e9d861e - antirez, 27 hours ago : Clear child data when opening the pipes.
e565632 - antirez, 27 hours ago : Child -> Parent pipe for COW info transferring.
e1eccf9 - antirez, 31 hours ago : zmalloc: Make fp var non local to fix build.
945a2f9 - antirez, 31 hours ago : zmalloc: zmalloc_get_smap_bytes_by_field() modified to work for any PID.
b13759e - antirez, 31 hours ago : redis-cli: "allocator-stats" -> "malloc-stats".
</div>

临时切换到某个commit

有可能你并不需要回滚代码,你只想将代码库暂时切换到之前的某个版本,看看那个时候的实现,然后回来继续写之前没有完成的任务。比如想看看945a2f9这个commit,执行操作

git checkout 945a2f9
</div>
Note: checking out '945a2f9'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

 git checkout -b <new-branch-name>

HEAD is now at 945a2f9... zmalloc: zmalloc_get_smap_bytes_by_field() modified to work for any PID.
</div>

再执行git branch

* (HEAD detached at 945a2f9)
 3.0
 3.2
 unstable
</div>

可以看到处于一个临时的分支上面,如果想以这个分支作为基础开发新的功能,可以创建一个新的分支进行开发。

git checkout -b old-bottle 945a2f9
</div>

如果想回到之前的的分支,只要checkout回去就好了。

当然如果在切回以前的commit的之前已经改了一些代码,可能不会那么顺利地切到之前的commit,可以

     使用reset将修改了的代码丢弃

     stash->checkout->stash pop将修改的代码找回来

     生成一个新的分支用于保存修改的代码

删除未发布的提交

如果确定要删除某几个commit,并且那几个commit的代码还没有提交到远程版本库里的话。

可以这样

git reset --hard 945a2f9

HEAD is now at 945a2f9 zmalloc: zmalloc_get_smap_bytes_by_field() modified to work for any PID.
</div>

再查看git log,就已经看不到945a2f9之前的commit记录了。

当然如果想保存当前没有提交的代码,可以和之前一样使用stash

git stash
git reset --hard 945a2f9
git stash pop
</div>

注意:

reset --hard 一定要慎用!!

这回让你彻底丢失本地的代码(除非有备份过)

删除已发布的提交

假设代码已经提交到远程版本库了,这时应该使用revert命令,revert命令实际是提交一个新的commit来回滚之前的commit。还是以945a2f9为例,现在想让代码会滚到945a2f9的状态,那么需要revert掉之前的commit

git revert e9d861e e565632 e1eccf9
</div>

或者可以这样做,revert掉HEAD的前三个commit

git revert HEAD~3..HEAD
</div>

之后就可以将现在的HEAD push到版本库了。

如果发现之前revert操作错了,可以再执行一次revert来取消上次的revert。

总结

以上就是这篇文章的全部内容了,本文只是简单讲了一些我个人的一些操作实践。希望能对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 简单谈谈Git中的回滚操作

相关文章

  • 2017-05-12IE 打开服务器下的MHT文件的实现方法
  • 2017-05-12关于Git远程与本地冲突的解决方法
  • 2017-08-23react-native在项目中使用半年后的感受
  • 2017-05-12在PB中如何让用户只能修改新增的数据
  • 2017-05-12对Web开发人员有用的8个网站小结
  • 2017-05-12简单谈谈Git中的回滚操作
  • 2017-05-12UE、UI、UCD、Interaction Design、UED、UX、HCI、Usability,IA
  • 2017-05-12github 常用命令总结大全
  • 2017-05-12WebStorm 遇到的问题总结
  • 2017-05-12分享几个新增备案不关站的代码

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • CSDN 博客的代码高亮问题自己修复
    • GitHub Eclipse配置使用教程详解
    • 关于base64编码的原理及实现方法分享
    • 如何禁止浏览器使用后退按钮功能
    • 键盘扫描码[比较完整]
    • 虚拟主机下实现多域名绑定不同的子目录的方法
    • Git 教程之远程仓库详解
    • 2013年CIO需要知道的八句格言
    • 页面中加载优酷视频去掉广告的方法
    • Git 教程简单入门介绍

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有