网站首页 > 技术教程 正文
最近工作中准备发布生产,于是将开发分支合并到 master 并且提交到远程,悠哉悠哉地坐等上线。可恶的产品 dog 又说先别上线,先提供测试环境给一线先体验一下,FUCK!怎么办?代码已经合并推送到远程,如果不撤回会影响其他团队的发布,由于以前只是对 git reset 和 git revert 了解一下,并没有深入去使用过,所以在项目代码中不敢轻易妄动,只能拜托其他同事帮忙了。吃了这次亏,决定深入学习一下这两个命令。
1、git reset 重置 commit
我们先创建两个 commit
现在我们使用 git reset 不加参数对commit进行重置
git reset 不加参数的情况默认使用的参数是 --mixed ,该参数模式是将提交回退到指定版本,将该版本之后所提交的改动回退到工作区。如果我们提交出错还需要编辑再提交就可以使用该模式。同时我们发现 reset 到目标版本后,之前的最新版本的 commit 已经被丢掉了。
当然我们使用 git reflog 是可以找回被 git reset 丢掉的 commit 的,我们利用 git reflog 和 git reset 恢复刚才的 reset
测试 git reset --soft
我们可以看到当带 --soft 参数时,回退目标版本后的修改内容会回退到暂存区
测试 git reset --hard
从图中我们可以看出,git reset 带 --hard 参数后,会丢掉目标版本之后的修改,此场景适用于回退,且不需要后面版本内容。
使用 reset 回退版本后,由于本地版本先于远程版本,推送时需要使用 -f 强推参数,git push -f 。
2、git revert
git revert 是将 commit 中的某一版本丢掉,然后将该版本前后的版本内容进行合并生成新的 commit ,对比 reset ,revert 不会丢失 commit 信息,而 reset 会丢失 commit 信息。
这个可以应用到场景:A同学提交代码后并推送到远程,版本为a1;B同学这时拉取代码进行开发,A同学a1版本有问题,需要回退,于是A同学将a1版本回退并推送到远程。B同学开发后生成了B版本,提交到远程,这里B同学还是把A同学的a1版本提交上去了。现在我们就要把 a1 版本丢掉,并且保留B同学的 b1 版本。
总结:使用 git reset 丢失已经提交的 commit ,可以进行再编辑处理进行提交,使用git revert 丢掉 commit 的修改并生成新的 commit 进行提交,但是有丢掉版本的的前后版本在合并成新的 commit 时,容易生成冲突。
猜你喜欢
- 2024-10-27 git安装使用 git的安装流程
- 2024-10-27 代码即将上线,突然有个中间提交不能发布!怎么办?
- 2024-10-27 git 将本地还原至某次提交 git还原到指定版本
- 2024-10-27 这有一份 Git 日常使用清单,你需要吗?
- 2024-10-27 Git教学篇2-git日常操作之git clone与git tag
- 2024-10-27 git clone切换分支步骤,代理设置,作者信息设置
- 2024-10-27 Git 高级用法,喜欢就拿去用 git常用
- 2024-10-27 Git 必知必会《续》 git hint
- 2024-10-27 git的使用 git基本用法
- 2024-10-27 Jenkins企业部署图文干货-git钩子篇
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)