git进行版本回退(文件恢复、恢复误提交、已提交)

git log命令

1.介绍

git是我们代码管理必不可少的工具,平常我们使用时可能用遇到下面的问题,有时候我们提交代码后,发现提交错了,比如本地修改了不想提交的文件提交了上去,或者误提交了不完整的代码,这时候怎么把提交的回退呢?
一种不那么上高大上的办法是把代码文件再进行修改,再提交一次,有没有很low(手动笑哭)
今天就来和大家分享下在git下如何快速高大上进行版本的回退,不管你的代码是已提交到了本地,还是提交到了远程,都可以进行完美的回退,且别人看不到提交记录。

2.git的4个区

在介绍如何进行git版本回退前,我们需要先了解下git中的4个区:

  • 工作区(Working Area)

    就相当于我们的工作空间的目录,我们代码本地存放的地方。

  • 暂存区(Stage)

    也称作Index,用来跟踪已暂存的文件,一般是存在.git下的index文件,所以有时也称暂存区为索引。

  • 本地仓库(Local Repository)

  • 远程仓库(Remote Repository)

3.git文件的5种状态

我们还需要了解下git文件的5种状态

  • 未修改(Origin)
  • 已修改(Modified)
  • 已暂存(Staged)
  • 已提交(Committed)
  • 已推送(Pushed)

他们之间的关系如下图:

工作区暂存区本地仓库远程仓库git addgit commitgit diff --cached(已暂存,未提交)git diif(已修改,未暂存)git pushgit diff master origin/master(已提交,未推送)工作区暂存区本地仓库远程仓库

  • 工作区中的文件初始的状态是未修改,当我们修改文件后,其状态改变为已修改git diff可以查看已经修改但未暂存的文件。(git diff后输入q可以退出)
  • 通过git add命令可以把已修改的文件添加到暂存区git diff --cached可以查看已暂存,但未提交的文件。
  • 通过git commit进行代码提交到本地仓库git diff {本地分支} {远程分支}可以查看已提交本地,但未推送到远程的分支。
  • 通过git push命令将本地分支推送到远程分支。

PS:在我们的IDEA

4.回退命令

通过前面对git的4个区5种状态的介绍,我们已经准备的差不多了,其实git的版本回退就是在这4区5状态之间进行的操作。下面开始划重点了(_)
首先我们来介绍用到的命令

git reset命令

git reset 这个就是进行回退的具体命令,这里先介绍他的几个参数

--soft--mixed以及--hard是三个恢复等级。

  • 使用--soft就仅仅将头指针恢复,已经add的暂存区以及工作空间的所有东西都不变。
  • 如果使用--mixed,就将头恢复掉,已经add的暂存区也会丢失掉,工作空间的代码什么的是不变的。
  • 如果使用--hard,那么一切就全都恢复了,头变,aad的暂存区消失,代码什么的也恢复到以前状态。

git log命令

git log 用来查看git的提交记录,但不能查看已经删除的记录。

git reflog命令

git reflog命令可以查看看所有分支的所有操作记录(包括(包括commit和reset的操作),包括已经被删除的commit记录。

进行回退操作

下面我们开始进行具体的回退操作命令:

  • git reset --hard :进行已修改或者暂存,但未提交文件的回退
  • git reset --hard origin/master ”进行已提交,但未推送的版本回退
  • 1: git reset --hard HEAD^ 2:git push -f 这两条命令是进行已提交且推送的回退,git reset --hard HEAD^为先回退到上一个版本,git push -f是进行强制推送,覆盖远程分支。

上面的--hard可以替换成其它的恢复等级,一般用--soft,这样一些修改的内容不会丢失。

各种版本回退举例

git reset --hard head #当前版本
git reset --hard HEAD^ #回退到上一个版本
git reset --hard HEAD^^ #回退到上上一个版本
git reset --hard HEAD~3 #回退到往上3个版本
git reset --hard HEAD~10 #回退到往上10个版本

我们还可以用git log或者git reflog 查看版本的记录,用版本号来恢复到指定的版本。如
git reset --hard 710ae83 其中710ae83是版本号;
回退后,可以再用log和relog查看下版本的记录,对比下他们的区别。

git远程覆盖本地

当然,我们也可以直接用远程仓库的代码直接覆盖本地的仓库,这里我就不多哆嗦了,直接给大家奉上命令:

git fetch —all
git reset —hard orgin/master  #(master可以修改成其它要覆盖的分支)
git pull

git fetch 只是下载远程库的内容,不做任务的合并
git reset 把HEAD指向刚刚下载的最新版本

5.回退版本实操

1)、我们用git log命令找到本地版本的commit Id

45928e0d34b45d12779dd2c380ac8994b1dac700是我最后一次提交,
然后我们现在需要回退到501c224524f66548f67d2d414a7f570b40bb7c78

2)、我们用git log命令找到本地版本的commit Id

git reset --hard 501c224524f66548f67d2d414a7f570b40bb7c78

3)、将本地修改强制push到指定的远程仓库(此处是mater)

git push origin master --force

结语

明白git的4区5状态后,版本及文件恢复其实很容易的,大家可以根据上面提的自己在本地试下。关于git如何回退版本,恢复文件,撤消提交今天就给大家介绍到这里,如有不足或错误的地方,欢迎大家指正。

转载:木鸟飞的博客
转载:码莎拉蒂 .的博客

本文作者:Journey&Flower

本文链接:https://www.cnblogs.com/JourneyOfFlower/p/16661221.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Journey&Flower  阅读(6762)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 404 Not Found REOL
  2. 2 白色恋人 游鸿明
  3. 3 盛夏的果实 莫文蔚
  4. 4 以父之名 周杰伦
  5. 5 晴天 周杰伦
  6. 6 简单爱 周杰伦
  7. 7 东风破 周杰伦
  8. 8 稻香 周杰伦
  9. 9 爱在西元前 周杰伦
  10. 10 千里之外 费玉清-周杰伦
  11. 11 偏爱 张芸京
  12. 12 大海 张雨生
  13. 13 月亮惹的祸 张宇
  14. 14 雨一直下 张宇
  15. 15 过火 张信哲
  16. 16 隐形的翅膀 张韶涵
  17. 17 天下 张杰
  18. 18 当你孤单你会想起谁 张栋梁
  19. 19 清明雨上 许嵩
  20. 20 玫瑰花的葬礼 许嵩
  21. 21 断桥残雪 许嵩
  22. 22 城府 许嵩
  23. 23 等一分钟 徐誉滕
  24. 24 客官不可以 徐良_小凌
  25. 25 坏女孩 徐良_小凌
  26. 26 犯贱 徐良
  27. 27 菠萝菠萝蜜 谢娜
  28. 28 贝多芬的悲伤 萧风
  29. 29 睫毛弯弯 王心凌
  30. 30 我不是黄蓉 王蓉
  31. 31 秋天不回来 王强
  32. 32 今天你要嫁给我 陶喆,蔡依林
  33. 33 丁香花 唐磊
  34. 34 绿光 孙燕姿
  35. 35 求佛 誓言
  36. 36 十一年 邱永传
  37. 37 下辈子如果我还记得你 马郁
  38. 38 一千年以后 林俊杰
  39. 39 江南 林俊杰
  40. 40 曹操 林俊杰
  41. 41 背对背拥抱 林俊杰
  42. 42 会呼吸的痛 梁静茹
  43. 43 勇气 梁静茹
  44. 44 爱你不是两三天 梁静茹
  45. 45 红日 李克勤
  46. 46 星月神话 金莎
  47. 47 嘻唰唰 花儿乐队
  48. 48 穷开心 花儿乐队
  49. 49 六月的雨-《仙剑奇侠传》电视剧插曲 胡歌
  50. 50 一个人的寂寞两个人的错 贺一航
  51. 51 好想好想-《情深深雨濛濛》电视剧片尾曲 古巨基
  52. 52 情人 刀郎
  53. 53 冲动的惩罚 刀郎
  54. 54 西海情歌 刀郎
  55. 55 2002年的第一场雪 刀郎
  56. 56 红玫瑰 陈奕迅
  57. 57 浮夸 陈奕迅
  58. 58 爱情转移 陈奕迅
  59. 59 独家记忆 陈小春
  60. 60 记事本 陈慧琳
  61. 61 看我72变 蔡依林
  62. 62 寂寞在唱歌 阿桑
  63. 63 樱花草 Sweety
  64. 64 中国话 S.H.E
  65. 65 波斯猫 S.H.E
  66. 66 杀破狼-《仙剑奇侠传》电视剧片头曲 JS
  67. 67 Lydia F.I.R.
  68. 68 I Miss You 罗百吉_青春美少女.
白色恋人 - 游鸿明
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 林利南

作曲 : 游鸿明

编曲 : 涂惠源

冷空气 却清晰

你在南极冰山雪地里

极光中雪白的肌肤

是哀愁是美丽

为了要遇见你

我连呼吸都反复练习

兰伯特仁慈的冰川

带领我走向你

零下九十一度的酷寒

滚滚红尘千年的呼喊

藏在沃斯托克的湖岸

沉寂轻叹

撒哈拉漫天狂沙 金字塔谁能解答

兵马俑谁与争锋 长城万里相逢

人世间悲欢聚散 一页页写在心上

含着泪白色恋人 却有灰色的年轮

零下九十一度的酷寒

滚滚红尘千年的呼喊

藏在沃斯托克的湖岸

沉静轻叹

撒哈拉漫天狂沙 金字塔谁能解答

兵马俑谁与争锋 长城万里相逢

人世间悲欢聚散 一页页写在心上

含着泪白色恋人 却有灰色的年轮

撒哈拉漫天狂沙 金字塔谁能解答

兵马俑谁与争锋 长城万里相逢

人世间悲欢聚散 一页页写在心上

含着泪白色恋人 却有灰色的年轮