雁过留声 发表于 2024-8-4 21:50:53

IDEA小技巧-Git的回滚&&强推&&代码找回(超具体)

PS:我们这里对 Test1 文件的 add ,commit 以及 push 展开讨论
在本地 add 到暂存区但未 commit 的代码回滚方式

对于新增以及修改的文件

直接鼠标右键文件举行回滚
https://i-blog.csdnimg.cn/blog_migrate/6ceaa0ef7fe9dabaa05dbdf0aef2a7ab.png
已经 commit 但未 push 的代码回滚方式

undo commit

回退最后一次提交,且只能回退最后一次提交,commit的内容都会被生存,被修改或新增的代码都会被生存
使用 undo commit 前

https://i-blog.csdnimg.cn/blog_migrate/d3c55b65957c331ea7c605d1be1e5758.png
使用 undo commit 后

https://i-blog.csdnimg.cn/blog_migrate/6b1c6220fddd085db3476713c0e9c10f.png
https://i-blog.csdnimg.cn/blog_migrate/06db748881808f5182400b606175281f.png
留意:这里是选择变动列表,我们一般使用默认的就行
https://i-blog.csdnimg.cn/blog_migrate/1530fc72c4367363f75ca569e86e6b8b.png
可以看见 Test1 变绿,回滚了提交,即回到了 add 状态
drop commit

直接删除提交,并回退代码,被修改或新增的代码都会被复原
使用 drop commit 前

https://i-blog.csdnimg.cn/blog_migrate/f01f63c7e39ce7f40b5b9deb5acb85b2.png
使用 drop commit 后

https://i-blog.csdnimg.cn/blog_migrate/b7b8a8a41a4ae60359440433238e37ad.png
https://i-blog.csdnimg.cn/blog_migrate/d039bebb0f62f500eec577d7a8a0b791.png
revert commit

使用后新增一次 revert 记录,并回退代码
使用 revert commit 前

https://i-blog.csdnimg.cn/blog_migrate/f01f63c7e39ce7f40b5b9deb5acb85b2.png
使用 revert commit 后

https://i-blog.csdnimg.cn/blog_migrate/15266352239cf9f89bbf58be052db75c.png
https://i-blog.csdnimg.cn/blog_migrate/66d0945c6e840547bfa36def964dd587.png
留意

回滚一般是回滚最近一次提交,假如你想要回滚中间的提交,大概必要蒙受冲突合并等一系列题目
reset

对于前面的 revert commit 以及 drop commit 都是单点的回滚,假如想要一次性的从最近的一次提交一步一步地到指定的提交,这时候就必要用到 reset 了
soft

在选定提交之后所做的所有更改都在暂存区中
commit的内容都会生存,其新增文件 + 文件变动都在暂存区
mixed

在选定提交之后所做的更改将被生存,但不会暂存以举行提交。
commit的内容都会生存,新增文件在工作区,文件变动在暂存区
hard

在选定提交之后所做的所有更改都将被抛弃(暂存和已提交)
commit的内容+暂存区的内容全部被丢弃
keep

在选定提交之后的已commit内容将被丢弃,但未commit的部分将生存
commit部分内容被丢弃,未commit部分生存
示例

https://i-blog.csdnimg.cn/blog_migrate/5585b54429ffcb8229f5dda890ed4241.png
https://i-blog.csdnimg.cn/blog_migrate/3264ee14086422ac7d40e3bf6768013b.png
https://i-blog.csdnimg.cn/blog_migrate/a2f5392aba9c8aa6b99c4f608fc2fe8f.png
选择 hard ,结果是
在选定提交之后所做的所有更改都将被抛弃(暂存和已提交)
commit 的内容+暂存区的内容全部被丢弃
已经 commit 并且 push 的代码回滚方式

发生题目场景


[*] 想要重新生成 commit message
[*] 代码没写好给 push 到远程堆栈了
以下是我们的预期示例图
https://i-blog.csdnimg.cn/blog_migrate/ed3fa66af9ac2a534ad073b82ce48b99.png
由于 git 对代码的掩护机制,导致我们无法直接将原F删掉,更换成我们的新的F’,所以我们必要接纳特别的手段到达目的,即 强推
首先我们将本地的代码推送到远程堆栈
https://i-blog.csdnimg.cn/blog_migrate/6d68a5f0c7d02c654e54efb3f9130413.png
假如这个时候我们想要修改 commit message,那这个时候就必要以下操作
然后 reset 我们远程的分支
https://i-blog.csdnimg.cn/blog_migrate/9f72e82ecc5cdb84723a2fa980530334.png
https://i-blog.csdnimg.cn/blog_migrate/9c48258b11a7b037714c49f623ea8676.png
https://i-blog.csdnimg.cn/blog_migrate/99c11718f7da7ddd024d6249a4a34850.png
这时候假如我们再 commit test ,然后 push 的话会报错
https://i-blog.csdnimg.cn/blog_migrate/dcbd5fafa80d022ae774a2bdbcb1ec7f.png
这是处于 git 的掩护机制,想要我们处理冲突,我们显然是不想处理的,而是直接更换掉远程堆栈的 test 提交
那么这个时候就必要使用 强推 这个操作了
https://i-blog.csdnimg.cn/blog_migrate/1c5eb15fadbbd004cc380cbc165caf59.png
但是我们这个时候 force push 是灰色的,怎么回事呢?
https://i-blog.csdnimg.cn/blog_migrate/bd40baa9c5302a26f8e9b914ea560177.png
嘿嘿,不急
打开设置,删除受掩护分支。
https://i-blog.csdnimg.cn/blog_migrate/cbd5813400b521d5695b1ac70a5d20a8.png
这时候就可以点击 强推 了
https://i-blog.csdnimg.cn/blog_migrate/51d8bd7a94c5991593bce778ab1805f2.png
这时候远程分支就和本地分支同等了
https://i-blog.csdnimg.cn/blog_migrate/49ac5639d3ee20cf2262fd31157f5e13.png
这时你就可以重新上传分支到远程堆栈了
另外留意

强推有风险,假如你的项目是多人开辟的话,很有大概会覆盖别人写的代码,造成不可挽回的后果
代码找回

假如我们不小心误回滚了我们的代码如何找回呢
这时我们可以随地找出空缺处右键
https://i-blog.csdnimg.cn/blog_migrate/29c39fdd9be96909c69f15a0b5b9930f.png
https://i-blog.csdnimg.cn/blog_migrate/8a402bfaa9fe1c59bf0e7b739645015e.png
这个时候我们即可通过 revert 举行代码找回
本篇文章参考于:https://www.bilibili.com/video/BV1Wa411a7Ek/?spm_id_from=333.880.my_history.page.click

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: IDEA小技巧-Git的回滚&&强推&&代码找回(超具体)