aiyoudiao aiyoudiao
  • JavaScript
  • Vue
  • React
  • 低代码
  • 线性系统
  • 暂未分类
  • LeetCode
  • 算法
  • 数据结构
  • 设计模式
  • Other
  • PMP
  • Office
  • 面试
  • Bash
  • 流年往事
  • 经验片段
  • 读书杂感
  • 归档
  • 分类
  • 标签
  • 简介
  • 收藏
  • 有趣
  • 文档

码二

扫微信二维码,认识一下码二吧😉。
  • JavaScript
  • Vue
  • React
  • 低代码
  • 线性系统
  • 暂未分类
  • LeetCode
  • 算法
  • 数据结构
  • 设计模式
  • Other
  • PMP
  • Office
  • 面试
  • Bash
  • 流年往事
  • 经验片段
  • 读书杂感
  • 归档
  • 分类
  • 标签
  • 简介
  • 收藏
  • 有趣
  • 文档
  • 流年往事

  • 经验片段

    • 2022年2月21日
    • 2022年3月16日
    • 2022年3月21日
    • 2022年3月23日
    • 2022年4月9日
    • 2022年4月10日
    • 2022年4月15日
    • 2022年4月27日
    • 2022年4月28日
      • 前言
      • git reset的三种模式
        • hard模式(灰飞烟灭模式,慎用)
        • soft模式(耦断丝连,还能接上)
        • mixed模式(尘归尘,土归土,可能有点乱)
      • 默认模式 与 拓展
        • 默认模式
        • 拓展
      • 其它git操作
        • 修改commit信息
        • 查看某次commit中修改记录
        • 查看所有commit记录
      • 总结
    • 2022年5月6日
    • 2022年5月16日
    • 2022年5月20日
    • 2022年6月16日
    • 2022年6月22日
    • 2022年6月23日
    • 2022年8月17日
    • 2022年10月12日
    • 2022年11月6日
    • 2022年11月8日
    • 2022年11月21日
    • 2022年12月06日
    • 2022年12月09日
    • 2022年12月27日
    • 2023年01月21日
    • 2023年02月03日
    • 2023年03月19日
    • 2023年03月26日
    • 2023年04月12日
    • 2023年05月03日
    • 2023年06月04日
  • 读书杂感

  • 历程
  • 经验片段
aiyoudiao
2022-04-28

2022年4月28日

# 前言

今天遇到一个问题,以前也遇到过,时间久了就给忘了,然后这次又重蹈覆辙的犯了一次,所以记录下。
当你本地commit了错误的文件,你通过reset回滚之后,发现上次提交的变更代码以及放在工作目录中的代码都消失了,只剩下上一次你提交的代码。这个就糟心,之前写的代码都没了。本篇文章就是记录这个问题的解决方案的。

# git reset的三种模式

hard 模式:重置到指定commit号的代码,会清空之前修改的代码,比如 commit、add、工作目录中的修改全部都清空掉了。顶多你知道之前的commit号,可以通过git checkout commit号切换到那次commit,然后把代码拷出来,但add过和工作目录中未add过的代码还是会丢失。反正 原commit会丢失,原add也会丢失,原工作目录中未add和未commit的也会丢失,只保留你指定commit号的所有记录。

soft 模式:重置到指定的commit号的代码,不会清空之前修改的代码,之前在工作目录中的代码依旧保留,而之前commit的代码会被放到 add过的暂存区中去,原来add过还未commit的部分也依旧保留。反正之前的commit都会放入add中保留,原add也保留,原工作目录中依旧保留。

mixed 模式:重置到指定的commit号的代码,会将之前commit的代码放入工作目录中,会把之前add暂存区中的代码也放入工作目录中,原工作目录中未add和未commit的依旧保留。反正就是之前commit和add全都放入工作目录中保留下来。

# hard模式(灰飞烟灭模式,慎用)

撤销暂存区和工作区的内容

git reset --hard

撤销掉当前commit的内容以及暂存区和工作区的内容

git reset --hard HEAD^

撤销到指定commit,并且清空之前commit的内容以及暂存区和工作区的内容

git reset --hard commit号

# soft模式(耦断丝连,还能接上)

撤销掉当前commit的内容到暂存区中

git reset --soft HEAD^

撤销到指定commit,把之前所有commit记录中的内容都放入暂存区中

git reset --soft commit号

# mixed模式(尘归尘,土归土,可能有点乱)

撤销当前add暂存区中的内容到工作目录下

git reset --mixed

撤销掉当前commit内容以及add的内容到工作目录下

git reset --mixed HEAD^

撤销到指定commit,并把之前commit以及add的内容放到工作目录下

git reset --mixed commit号

# 默认模式 与 拓展

# 默认模式

默认模式就是mixed,但是还是建议加上,避免这个默认配置被更改了,从而导致医疗之外的问题发生。

git reset

# 拓展

如果你想清空当前工作区,可以使用 git checkout .。
如果你只是想清空当前工作区中某个文件的记录,也就是还原某个文件到最近一次commit时的状态,可以使用以下命令

# git checkout -- index.js
git checkout -- fileName

如果你想撤销一个有commit记录的文件,那只能先将commit还原到工作区,也就是要git reset --mixed HEAD fineName。
然后再git checkout -- fileName。 比如以下示例

git reset --mixed HEAD index.js
git checkout -- index.js

# 其它git操作

# 修改commit信息

比如你本次commit,不小心把commit msg 打错了,可以通过git commit --amend,修改commit信息。

# 查看某次commit中修改记录

查看最新的commit记录git show
查看指定commit记录所有修改git show commit号
查看某次commit中某个文件的修改记录git show commit号 fileName

# 查看所有commit记录

查看当前commit及以下所有commit记录:git log
查看所有的commit记录包括reset过的记录:git reflog show
以树形图的方式查看commit记录:git log --graph

# 总结

通过这次一不小心的reset,算是长了个小见识,可能一不小心就把你辛苦写很久的代码全部清空,所以要注意噢。非必要,千万不能git reset --hard commit号。

#代码片段#git
上次更新时间: 10年18月2023日 01时57分53秒
2022年4月27日
2022年5月6日

← 2022年4月27日 2022年5月6日 →

最近更新
01
01.数据结构导论一览.md
10-16
02
30.2023年06月04日.md
06-04
03
08.与测量相关.md
05-06
更多文章>
Theme by Vdoing | Copyright © 2017-2023 aiyoudiao 码二 备案号: 鄂ICP备2022002654号-1