阅读 69

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)]


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐