简单谈谈Git中的回滚操作
介绍下场景
,一定要想清楚,自己想干什么。
找redis源码作为例子,查看所在的分支git branch
3.0 3.2 unstable
取前5条mit看看
git log --pretty=format:"%h - %an, %ar : %s" -5
e9d861e - antirez, 27 hours ago : Clear child data when opening the pipes. e565632 - antirez, 27 hours ago : Child -> Parent pipe for COW info transferring. e1ef9 - 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".
临时切换到某个mit
有可能你并不需要回滚代码,你只想将代码库暂时切换到之前的某个版本,看看那个时候的实现,然后回来继续写之前没有完成的任务。比如想看看945a2f9这个mit
,执行操作
git checkout 945a2f9
Note: checking out '945a2f9'. You are in 'detached HEAD' state. You can look around, make experimental changes and mit them, and you can discard any mits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain mits you create, you may do so (now or later) by using -b with the checkout mand 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.
再执行git branch
(HEAD detached at 945a2f9) 3.0 3.2 unstable
可以看到处于一个临时的分支上面,如果想以这个分支作为基础开发新的功能,可以创建一个新的分支进行开发。
git checkout -b old-bottle 945a2f9
如果想回到之前的的分支,只要checkout
回去就好了。
如果在切回以前的mit
的之前已经改了一些代码,可能不会那么顺利地切到之前的mit
,可以
使用reset
将修改了的代码丢弃
stash->checkout->stash pop
将修改的代码找回来
生成一个新的分支用于保存修改的代码
删除未发布的提交
如果确定要删除某几个mit
,并且那几个mit
的代码还没有提交到远程版本库里的话。
可以这样
git reset --hard 945a2f9 HEAD is now at 945a2f9 zmalloc: zmalloc_get_smap_bytes_by_field() modified to work for any PID.
再查看git log,就已经看不到945a2f9之前的mit
记录了。
如果想保存当前没有提交的代码,可以和之前一样使用stash
git stash git reset --hard 945a2f9 git stash pop
注意:
reset --hard 一定要慎用!!
这回让你彻底丢失本地的代码(除非有备份过)
删除已发布的提交
假设代码已经提交到远程版本库了,这时应该使用revert
命令,revert
命令实际是提交一个新的mit
来回滚之前的mit
。还是以945a2f9为例,现在想让代码会滚到945a2f9的状态,那么需要revert
掉之前的mit
git revert e9d861e e565632 e1ef9
或者可以这样做,revert
掉HEAD的前三个mit
git revert HEAD~3..HEAD
之后就可以将现在的HEAD push到版本库了。
如果发现之前revert
操作错了,可以再执行一次revert
来取消上次的revert
。
以上就是这篇文章的全部内容了,本文只是简单讲了一些我个人的一些操作实践。希望能对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。
编程语言
- 宿迁百度关键词排名指南:实现精准营销的关键
- 四川SEO优化怎么做网络推广
- 立昂技术备案老域名收购:如何为您的业务赋能
- 安徽百度关键词seo贵不贵,一般需要多少钱
- 吉林百度快照排名怎么做电话营销
- 多伦新手做SEO怎么做
- 甘肃优化关键词排名推广怎么做论坛营销
- 沙雅SEO网站推广:提升您的在线可见性
- 四川SEO优化如何提升销售额和销售量
- 聂荣网站排名优化:提升网站可见性的全方位指
- 涞水SEO:提升地方企业在线可见性的策略
- 辽宁百度seo排名怎样做网站排名
- 临湘哪有关键词排名优化:提升网站可见度的关
- 黑龙江百度网站优化有没有优惠
- 凉城优化关键词排名推广:提升您的网络可见性
- 萝北整站优化:提升您网站流量和排名的全面指