Git学习笔记:Git进阶操作

这一篇文章我们来介绍Git对暂存区的操作。

暂存区,顾名思义,就是把东西暂存到里面,这样可以方便修改和撤销。实际上,"暂存区"才是 Git 最精华、最核心的设计,也是Git区别于其他老式版本控制工具的根本所在。

为什么要使用暂存区?

设想你正在开发一个复杂的系统,你在做一个版本的修改,但是这个修改改动的地方较多,你不会每改一个地方就git commit一次到仓库,所以,这个时候暂存区的作用就显示出来了,直到你真正的确定了你的文件内容修改完毕了,你才将暂存区的东西提交到仓库,这样就可以保证你每次提交的东西都是经过多次打磨,深思熟虑的版本。

简单来说,暂存区就是你打磨下一个版本的地方。

暂存区的操作命令

  • git ls-files

    当你觉得git status显示混乱时,用这个命令确认"到底哪些文件已经被add了"。

    这样方便本次的一个修改。

  • 撤销操作:把文件"拿出"暂存区

    如果我add错了怎么办?

    这个命令分为两个:

  • git restore 文件名:撤销工作区修改(从暂存区恢复)

  • git restore --staged 文件名: 撤销暂存区修改(保留工作区的修改)
    注意:这两个命令有本质的区别,前者是从暂存区恢复到工作区(那刚刚工作区写的代码就没有了),后者是撤销暂存区的文件(工作区的文件还在,暂存区的提交就被撤销了)。

  1. 基于暂存区的回退
    在开发的过程中,我们难免会把代码写的比较乱,如果你不想要某一次写的代码了,可以回退版本。
    有三个命令,他们的作用各有不同:
bash 复制代码
git reset --soft 版本号
git reset --mixed 版本号
git reset --hard 版本号

作用如下:

bash 复制代码
git reset --soft 版本号 回退到指定版本(保留工作区和暂存区)
git reset --mixed 版本号 回退到指定版本(保留工作区,撤销暂存区)
git reset --hard 版本号 回退到指定版本(撤销工作区和暂存区)

这三个命令各有各的作用,如果不带--mixed这种命令的话,默认是--mixed

这里需要注意的是,--hard会导致彻底回退,需要谨慎使用。

补充

这里补充一个知识点:

如果不小心将代码误删了,可以使用git reflog命令查看历史的记录,然后再使用git reset --hard 版本号来进行恢复即可(Git里面的版本哈希值是40位,操作时写前五位即可,因为查看的时候一般也只有前五位)。

相关推荐
小宋加油啊25 分钟前
机械臂抓取物体 PVN3D算法调研学习
学习·算法·3d
Xzh04231 小时前
AI Agent 学习路线(Java 后端方向)
java·人工智能·学习
Cloud_Shy6182 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第五章 Item 33 - 35)
开发语言·人工智能·笔记·python·学习方法
做cv的小昊2 小时前
计算机图形学:【Games101】学习笔记08——光线追踪(辐射度量学、渲染方程与全局光照、蒙特卡洛积分与路径追踪)
图像处理·笔记·学习·计算机视觉·游戏引擎·图形渲染·概率论
星恒随风2 小时前
C++ 类和对象入门(五):初始化列表、explicit 和 static 成员详解
开发语言·c++·笔记·学习·状态模式
糖少主2 小时前
WSL中使用Beyond Compare 3/4/5作为difftool
git·wsl·beyond compare·difftool
小王C语言3 小时前
vscode智能提示问题、跳转问题
ide·vscode·编辑器
sensen_kiss3 小时前
CPT304 SoftwareEngineeringII 软件工程 2 Pt.8 软件测试 (Software Testing)(上)
学习·软件工程
力学与人工智能4 小时前
PPT分享 | 洛桑联邦理工学院魏震:深度几何学习在工业设计优化中的应用
学习·优化·工业设计·深度几何学习·洛桑联邦理工学院
console.log('npc')4 小时前
Git版本管控:git reset \+ git push \-f 原理、实操与避坑指南
git