git revert和reset,idea git解决冲突
问题说明:
当我们使用git独自或多人开发时,有时会出现错误的提交。 我们此时将撤销的上一个操作,到回退、回滚的上一个版本为止,在这里总结了3358www.Sina
图解reset和revert的区别1.reset删除错误的提交记录reset :删除错误的提交记录。 (为了回滚版本并合并多余的提交记录以简化) ) ) ) ) )。
例如,返回到版本2
例如,将头指针放在版本2的版本上,然后删除后面的版本
[导出外链图像失败。 源站可能有防盗链机制。 我们建议您保存并直接上传图片。 (img-pVehqinK-1614157593066 ) ) https://bmft-img-1304103443.cos.AP-Chongqing.myqclous ]
因为要还原到以前的版本,所以这需要强制推送: gitpushoriginmaster 3360 master-f
reset有四种不同的类型。 hard,soft,mixed,keep。 以上介绍了--hard强制类型,详细情况正在扩展中。
2. revert创建新的提交记录并复盖错误版本revert :基于版本2创建新的提交记录并复盖以前错误的代码,但仍保留错误的提交记录。
(为了回滚版本,保存哪个笨蛋提交了错误代码的记录)
(方式1 ) git命令行解决方案1. reset使用reset从版本4回滚到版本2
自述文件的不同版本如下
[导出外链图像失败。 源站可能有防盗链机制。 我们建议您保存并直接上传图片。 (img-ChhCoVUP-1614157593078 ) https://bmft-img-1304103443.cos.AP-Chongqing.myqclous
1.1 .查看提交记录GitHub查看提交记录
[导出外链图像失败。 源站可能有防盗链机制。 我们建议您保存并直接上传图片。 (img-QrW9nEcV-1614157593080 ) ) https://bmft-img-1304103443.cos.AP-Chongqing.myqclouus ]
本地发送记录
git log [ (外链图像导出失败。 源工作站可能有防盗链机制。 建议保存图像并直接上传(img-qf4UydgL-1614157593081 ) (https://bmft-img-130410343.cos.AP-Chongqing.) ) )
1.23358 www.Sina.com/(de9cf 03 FB 023 ae6f 294 b 31 AE 3f 7e bfd 6c 0e0 ad为version2的版本号) ) ) ) ) ) ) )。
git reset-- hard de9cf 03 FB 023 ae6f 294 b 31 AE 3f 7e bfd6c 0e0 ad 1.http://www.Sina.com/gitpushoriginmaster 3360 master-fgit hub检查提交
在本地查看提交记录时,目标版本之后的所有提交都将消失
git log
2. revert git revert建立新的提交,覆盖错误的版本,并记录那个笨蛋提交了错误的代码
目标:从版本4回滚到版本2
2.1查看当前版本的GitHub显示
本地显示
git log
33558 www.Sina.com/git revert-NDE9cf 03 FB 023 ae6f 294 b 31 AE 3f 7e bfd 6c 0e0 ad ^ . head-n不自动提交,只是将回滚的代码添加到中。 暂存区(最后一条代码为verson 1version 2version 3version 4revert-to-version 3revert-to-version 2,生成两个提交记录
HEAD是当前状态的缩写代表,与298241 a 046 a 3781 c 73 c 169 c 933 f 5539 e 198351相同
^ .代表是范围
revert ,因为 revert 是一个一个 revert 的,格式是 OLD_COMMIT_ID^…NEW_COMMIT_ID ,旧的提交记录在前面
理解 revert 多个提交
(没有输出就是成功,如果出现异常可以看看下面的问题和解决)
查看:
(1)查看文件,本地文件已经回滚到了 version2
2.3 提交文件 git commit -m "revert-to-version" git push origin master:master
查看:
本地查看
git log
查看 GitHub
(方式2)IDEA 界面操作
其实 IDEA 这种图形化操作其实更方便,请确保你安装 Git 插件,
下面的操作都是将 version4 的版本回滚到 version2
1. reset 1.1 Alt + 9 查看 git Log
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kcX8yLZ0-1614157593093)(https://bmft-img-1304103443.cos.ap-chongqing.myqcloud.com/image/20210224160231.png)]
1.2 reset 回滚到 version2
右键单击 version2 记录,然后选择 Reset Current Branch to Here…
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LN5go44m-1614157593094)(https://bmft-img-1304103443.cos.ap-chongqing.myqcloud.com/image/20210224160700.png)]
1.3 选择 Hard 模式
后面拓展会详细讲 4 中模式的区别
1.4 提交
hard 强制 reset 之后的结果如下
强制 push daim
因为你本地的 git 代码 的版本 version2 低于远程 version4 ,所以普通 push 会失败,这里只有强制 push
Ctrl + Shift + K push代码(也可以右键,选择 Git -> Repostory -> Push )
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pgxtWIHF-1614157593098)(https://bmft-img-1304103443.cos.ap-chongqing.myqcloud.com/image/20210224161931.png)]
但是如果你像我一样看到 Force Push 是灰色的,应为IDEA 更新后不支持在 master 分支上 强制 push
来自 StackOverFlow:
As far as issue 85773 is concerned, that option shouldn’t be in the GUI yet (for IDEA 11-12 or 13+).
And it would be disabled when on the master branch.
但是你可使用命令强制 push
git push origin master:master -f
push 结束后在 GitHub 中看看
2. revert
我们回到最初的起点
2.1 Alt + 9 查看 Git Log
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s58RsiAb-1614157593100)(https://bmft-img-1304103443.cos.ap-chongqing.myqcloud.com/image/20210224164005.png)]
GitHub 的 Commit 提交记录
4.2 revert 重做 version2
右键单击 version2 记录,然后选择 Revert Commit
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l8vRfNNN-1614157593102)(https://bmft-img-1304103443.cos.ap-chongqing.myqcloud.com/image/20210224164202.png)]
4.3 (重点) 选择 merge
选择 MERGE 你的本地的文件才会回到 version2 的版本,ACCEPT YOURS 不会回到之前版本
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tvRgUIAq-1614157593103)(https://bmft-img-1304103443.cos.ap-chongqing.myqcloud.com/image/20210224164300.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2nADRCJm-1614157593104)(https://bmft-img-1304103443.cos.ap-chongqing.myqcloud.com/image/20210224164612.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k9ALzwfs-1614157593105)(https://bmft-img-1304103443.cos.ap-chongqing.myqcloud.com/image/20210224164955.png)]
push 代码(因为你的代码的版本是递增的,不会删除已经推送到远程的分支,所以可以普通 push)
快捷键 Ctrl + Shift + K
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7DeD6hII-1614157593108)(https://bmft-img-1304103443.cos.ap-chongqing.myqcloud.com/image/20210224170111.png)]
查看 GitHub commit 记录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lw3yx8B4-1614157593109)(https://bmft-img-1304103443.cos.ap-chongqing.myqcloud.com/image/20210224170216.png)]
(拓展) 4 种 git reset 详解
可以参考这篇文章:Git Reset 三种模式 - 简书 (jianshu.com)
参考:
Git Reset 三种模式 - 简书 (jianshu.com)
(14条消息) Git恢复之前版本的两种方法reset、revert(图文详解)_游笑天涯-CSDN博客_git revert
常见问题和解决 1. git revert 错误
报错信息如下
# git revert -n de9cf03fb023a8ae6f294b31ae3f7ebfd6c0e0ad^..HEADREADME.md: unmerged (ae62d700d653021c24138215ac9f4e791a921b56)README.md: unmerged (e5a4c368e4b9131d170893a69c8b69bf50438606)README.md: unmerged (e9582e4fdfa9384de9e52e75c80ee42e5c8cc169)error: your index file is unmerged.fatal: revert failed
error: could not revert de9cf03… version2
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B5KQRLzE-1614157593114)(https://bmft-img-1304103443.cos.ap-chongqing.myqcloud.com/image/20210224165432.png)]