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

【Git】基本操作

【简介】

Git是一种“版本控制器”, 可以用于记录每次的修改以及版本的迭代

其可以控制电脑上所有格式的文件,方便地查看文件的每个小修改版本都修改了什么内容,但前提条件是被管理的文件需要放在对应的git仓库(又名“版本库”)

【初始化本地仓库】

git init 命令可以在所在的文件夹下创建一个“git本地仓库”

在创建仓库后, 就会在对应目录下出现一个隐藏目录“.git”, 这个隐藏目录就是“git仓库”(版本库),用来管理与追踪仓库内的文件修改

切忌修改版本库里面的任何内容, 一旦改乱了, 会把整个git仓库破坏掉,丧失功能

【对配置项进行操作】

在初始化本地仓库后, 需要新增两个配置项, 一个是name, 一个是email, 这两个是必须要配置的, 如果不配置, 可能让版本库功能失效, 需要通过git config 命令来配置, 这个命令可以对git配置项进行操作

通过git config -l 命令, 可以查看当前git本地仓库的所有配置项,通过查看末尾两行, 即可知晓配置成功

git config 加上 --unset 命令, 可以删除指定的配置项,譬如, git config --unset user.name 可以删除user.name=baiye这个配置项

git config 加上 --global 命令,表示当前命令在该机器下的所有git仓库下都生效, 譬如以下的这个命令可以让该机器的所有git仓库的姓名与邮箱都是指定的这两个值

通过--global 命令生效的配置无法直接被 --unset 命令删除, 而是需要通过--global   --unset 命令才能在全局范围内, 把这个配置项重置掉

【将文件挪入仓库】

上图中【ReadMe】文件无法被git管理, 因为它不在git仓库中, 但万万不可以直接在git仓库中创建文件, 这很可能直接搞废这座仓库

版本库之外的区域被称为【工作区】

【工作区】是一个重要的概念,虽然处于工作区中的【ReadMe】文件无法被git管理,但是通过一些方法就可以手动管理了

以下是版本库与工作区的交互流程图:

其中, stage区域是“暂存区”/“索引”

1.通过add命令, 可以将工作区中的修改(增删改)放入到版本库的暂存区中

2.通过commit命令, 可以将暂存区中的内容, 提交到master分支下

走完这两步, 把【ReadMe】文件提交到master分支下, 才能让git对这个文件进行管理

【对象库】

对象库也被版本库所维护, 

当执行add操作后, 工作区会将修改内容写入到一个新的git对象中, 而这个git对象被对象库所维护, 因此对象库中存储的是一个个git对象

对文件的一份份修改操作都会以一个个单独的git对象的形式展现, 这就表示了对象库可以维护文件的一个个修改版本

【暂存区, master分支】

暂存区和master分支中所存放着的, 都是一个个git对象的索引

因此, 只要能拿到HEAD指针, 就能拿到master这棵树, 从而就能拿到某一个文件的具体修改内容, 从而可以管控这个文件

【add命令】

git add [文件名] ....命令可以将指定文件从工作区放入到版本库的暂存区中, 文件名可以指定好几个, 从而实现批量放入

git add . 命令则是可以将工作区中的所有文件放入到版本库的暂存区中

【commit命令】

git commit -m "[提交描述]" 命令,可以将暂存区中的内容, 提交到master分支下

【log命令】

git log 命令可以展示最近的提交记录

也可以通过git log --pretty=oneline命令, 打印漂亮可观的几行日志

【status命令】

git status 命令可以查看当前仓库的状态, 看看暂存区内有没有需要提交的内容, 它只能检测到工作区中有哪个文件进行了修改

【diff命令】

git diff [文件名] 命令用于显示当前文件在暂存区与工作区之间的差异

a/:改动前的文件名,b/:改动后的文件名

---:改动前  ,+++:改动后

-1:改动前的第一行内容    +1:改动后的第一行内容

通过status和diff命令, 就可以看到到底修改了哪些内容, 以及修改的具体行数

【版本回退】

Git 能够管理文件的历史版本,这也是版本控制器重要的能力。如果有⼀天发现之前的工作出现了很大的问题,需要在某个特定的历史版本重新开始,这个时候,就需要版本回退的功能了

【reset命令】

git reset 命令用于回退版本,可以指定退回某⼀次提交的版本
“回退”本质是将版本库中的内容进行回退,工作区或暂存区是否回退由命令参数决定
git reset 命令语法格式为: git reset [-- soft | -- mixed | -- hard ] [ HEAD ]
--mixed : 默认选项,使用时可以不用带该参数。额外将暂存区的内容退回为指定提交版本的内容,而工作区文件保持不变
--soft : 不会改变 工作区和暂存区的内容,只是将版本库回退到某个指定版本
--hard : 额外 将暂存区,工作区都退回到指定版本。
但当工作区有未提交的代码时, 使用这个命令会导致工作区回滚,没有提交的代码就无法找回,因此要慎重使用

一旦使用--hard回退到了如上提交版本, 那么工作区也会回滚, file1-3这三个文件就再也找不回来了

【撤销修改】

如果我们在我们的工作区写了很长时间的代码,越写越写不下去,觉得自己写的不太行,想恢复到
上⼀个版本,  就可以进行撤销修改

【情况一:对于工作区的代码,还没有 add(代码存在于工作区)

可以使用checkout命令

git checkout -- [file] 命令, 可以让工作区的文件 回到最近⼀次 add commit 时的状态

【情况二:已经 add ,但没有 commit(代码存在于工作区与暂存区)】

可以使用git reset 命令,其默认指定--mixed 参数,可以将暂存区的内容退回为指定的版本内容, 再指定HEAD, 表示退回到当前版本(如果是HEAD^就是上一个版本, HEAD^^就是上两个版本......)
执行后, 暂存区就不存在需要修改的代码了, 此时回到了情况一, 因此继续使用 git checkout -- [file] 命令来解决

【情况三:已经 add ,并且也 commit 了(代码同时存在于工作区, 暂存区, master分支)】

可以通过  git reset --hard HEAD^ 命令来回退到上⼀个版本,如此一来就回到了情况二,按照情况二的处理方式即可
但这有一个前提条件, 就是commit后, 没有通过push操作, 将代码提交到远程仓库
撤销修改的主要目的, 就是不影响远程仓库中的代码

【删除文件】

第一步, 使用rm命令, 删除工作区中的内容
第二步, 使用add操作, 将工作区中的变动提交至暂存区
第三步, 使用commit操作, 进行了一次提交
但这个流程可以简化到两步
通过 git rm 命令, 不但可以删除工作区中的对应内容, 还可以同时将工作区中的变动提交至暂存区
http://www.xdnf.cn/news/7157.html

相关文章:

  • 有源晶振与无源晶振 旁路模式与非旁路模式 深度剖析
  • Go语言--语法基础5--基本数据类型--类型转换
  • LabVIEW汽车CAN总线检测系统开发
  • C++.备考知识点
  • Milvus向量数据库
  • Apache Spark:大数据处理与分析的统一引擎
  • iOS 内存分区
  • 聚类算法K-means和Dbscan的对比
  • Blender建小房子流程
  • 符合Python风格的对象(再谈向量类)
  • Adapter适配器模式
  • 10.13 LangChain工具调用实战:@tool装饰器+小样本提示,日处理10w+调用秘籍
  • inverse-design-of-grating-coupler-3d
  • 大模型在胫骨平台骨折预测及治疗方案制定中的应用研究
  • linux下的 xargs命令使用详解
  • GC全场景分析
  • tensorflow图像分类预测
  • matlab分段函数
  • 第二章:安卓端启动流程详解与疑难杂症调试手册
  • Open CASCADE学习|几何体切片处理:OpenMP与OSD_Parallel并行方案深度解析
  • 【Linux】简易版Shell实现(附源码)
  • 1.QPushBotton 以及 对象树
  • Redis学习打卡-Day3-分布式ID生成策略、分布式锁
  • 【Bluedroid】蓝牙HID DEVICE错误报告处理全流程源码解析
  • 从坏道扫描到错误修复:HD Tune实战指南
  • 学习黑客Active Directory 入门指南(三)
  • 07 负载均衡
  • 使用Next.js优化静态网站:以书法字体生成器为例
  • 老旧设备升级利器:Modbus TCP转 Profinet让能效监控更智能
  • 计算机图形学中MVP变换的理论推导