当前位置: 首页 > news >正文

Git - 记录一次由于少输入了一个命令导致的更改丢失

Git - 记录一次由于少输入了一个参数导致的更改丢失

前言

某晚我激情开发了几个小时,中途没有进行commit存档。准备睡觉时,我想创建一个新的分支并将今晚所有更改提交到新分支上(似乎应该开发时候就创建?)。

然后因为少输入了一个参数,导致被跟踪过的文件的更改全部消失了。

成因

我想创建并切换到api分支:

git checkout -b api

结果一困少输了个-b,变成了:

git checkout api

结果我那晚开发的所有内容恰好都在api这个文件夹下,于是所有的更改都没了。

分析

在执行git checkout命令时,可以将整个仓库还原到一个分支/commit_hash/tag,可以用于恢复一个文件(夹)。

当切换到分支/commit_hash/tag时,正确的命令是git checkout 分支/commit_hash/tag

  • 例如我有一个分支名为dev,那么我可以使用git checkout dev命令切换到dev分支;
  • 例如我有一个commit的hash为9259d713a40e97f97af61a422631b723f5666aa5,那么我可以使用git checkout 9259d713命令切换到这次commit;
  • 例如我有一个tag名为v0.1,那么我可以使用git checkout v0.1命令切换到这个tag;
  • 例如我想创建并切换到dev分支,那么我可以使用git checkout -b dev命令。

若重名,则优先级分支 > 标签 > commit_hash

当恢复一个文件(夹)时,正确的命令是git checkout -- 文件(夹)名

  • 例如我有一个文件夹是Solution,那么我可以通过命令git checkout -- Solution将文件夹Solution恢复到暂存区或版本库。

但是,如果我没有加--git checkout命令仍然会恢复这个文件夹!

误操

我本来想创建并切换到一个分支api

git checkout -b api

结果因为困倦忘记输入-b了:

git checkout api

结果此时我还没有api分支,但正好有api文件夹。

git一看,心想,你这命令不规范,想还原一个文件夹但是没有--啊,你应该输成git chcekout -- api,太菜了吧,--都不知道输。还好我git比较聪明,知道你的意思,虽然你没有加--,但我还是帮你把文件夹api给还原了吧。

然后我一个晚上的更改就几乎全被还原了。。。没被还原的,只剩下一些未被跟踪过的文件(新创建的文件)。然后我就在VsCode的时间线里把文件一个一个恢复了一下。。。

竟然,,一丁点提示都没有。

亡羊补牢

早就有人吐槽创建并切换到新分支也是checkout命令,因此从git 2.23开始引入了switch命令。

以后再切换分支时,就使用git switch 分支名;创建并切换到新分支时,就使用git switch -c 分支名好了。

End

另:我的git版本为2.42.0.windows.2

The Real End, Thanks!

原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/144929924

http://www.lryc.cn/news/516127.html

相关文章:

  • nodeJS下npm和yarn的关系和区别详解
  • 党员学习交流平台
  • HTML5 文件上传(File Upload)详解
  • 1.2.1-2部分数据结构的说明02_链表
  • vue elementUI Plus实现拖拽流程图,不引入插件,纯手写实现。
  • linux上使用cmake编译的方法
  • 如何实现el-select多选下拉框中嵌套复选框并加校验不为空功能呢?
  • 源码理解 UE4中的 FCookStatsManager::FAutoRegisterCallback RegisterCookStats
  • Android 根据内存大小显示MTP模式连接PC时的名称
  • 不只是mini-react第一节:实现最简单mini-react
  • 前端路由layout布局处理以及菜单交互(三)
  • 小结:DNS,HTTP,SMTP,IMAP,FTP,Telnet,TCP,ARP,ICMP
  • 【C++】P2550 [AHOI2001] 彩票摇奖
  • 并发服务器框架——zinx
  • Unity 中计算射线和平面相交距离的原理
  • 浅谈棋牌游戏开发流程七:反外挂与安全体系——守护游戏公平与玩家体验
  • 《无力逃脱》V1.0.15.920(59069)官方中文版
  • 六种主流服务器的选择与使用
  • TiDB 升级至高版本提示'mysql.tidb_runaway_watch' doesn't exist 问题处理
  • GRU-PFG:利用图神经网络从股票因子中提取股票间相关性
  • 数字化供应链创新解决方案在零售行业的应用研究——以开源AI智能名片S2B2C商城小程序为例
  • 安卓Activity执行finish后onNewIntent也执行了
  • 数据结构.期末复习.学习笔记(c语言)
  • Kafaka安装与启动教程
  • 根据docker file 编译镜像
  • 联邦学习的 AI 大模型微调中,加性、选择性、重参数化和混合微调
  • android 外挂modem模块实现Telephony相关功能(上网,发短信,打电话)
  • 【计算机视觉技术 - 人脸生成】2.GAN网络的构建和训练
  • 数据中台与数据治理服务方案[50页PPT]
  • 【Qt】将控件均匀分布到圆环上