Linux -- git

news/2025/1/16 0:01:10/

1  啥是git

git是一个代码的历史版本管理工具,通过用树形结构管理一个代码版本可以快速实现回滚等操作

1.1  git基本概念

  • 工作区(Working Directory/Working Tree)

    • 这是你当前正在处理项目文件的地方。你可以在工作区中创建、修改、删除文件,这些改动是未被追踪或提交到版本控制系统中的。
  • 暂存区(Staging Area/Index)

    • 暂存区是一个临时区域,你可以将工作区中的改动放入这里,以便在提交之前进行整理和准备。可以理解为一个待提交的快照。当你运行 git add 命令时,文件的改动被添加到暂存区。
  • 版本库(Repository/Local Repository)

    • 版本库是项目的历史记录,包含了所有提交的历史快照。版本库存储在本地机器上,并且包含所有已提交的更改记录。你可以通过 git commit 命令将暂存区中的内容提交到版本库中,从而生成一个新的提交历史记录。

2  git常用命令

2.1  设置信息

git config --global user.name # 设置用户名
git config --global user.email # 设置全局邮箱

信息设置在了~/.gitconfig


2.2  将一个文件夹配置成仓库

git init

所有的信息放在了.git/隐藏文件夹中,此文件夹是一个树状结构

git status # 可查看仓库状态,看文件有无存进暂存区等
git add # 将文件加进暂存区
git add . # 全部加进去


2.3  将历史版本存进版本库里

 git commit -m 备注

        更新代码

git status
git add 更改文件名


此时在输入git status,当文件名变绿说明已经放进了暂存区,输入git commit -m则表明永久存下来,放入了新节点


        具体操作的结果如下图所示:


2.4   查看某个文件与当前分支最新的版本区别(暂存区里最新版本的区别)

git diff 文件名


2.5  从暂存区删除

git rm --cached xxx
git restore --stage

两者的区别在于,前者属于不希望管理该文件,将文件从列表中删除出来,后者输运仍管理文件,但从暂存区中取出


2.6  查看当前分支(从最初起点走到当前head的路径)的所有版本

git log 

        顺序从下向上显示,按q退出

--pretty=oneline

        实现一行显示

2.7  往前回滚某一个历史记录

git reset --hard HEAD^
git reset --head HEAD ~

 一个~一个版本,两个^^两个版本,~^相同
回滚并不会将内容删掉

        实现回退回来:

git reflog # 查看HEAD指针的所有的移动记录

在给出的移动记录中,会有每一个点的编号,即哈希值前7位

        回滚到任意结点

git reset --head 版本号

        重点:git loggit reflog的区别

git log从起点到当前head节点的路径
git refloghead的所有的移动历史节点

        恢复文件

主要的背景是:当前文件修改放在暂存区,但是想恢复到未修改前的状态
下面是将文件未存入暂存区的删除

git checkout - 文件名git restore 文件名

其中git restore并非回滚到上一个历史版本,而是从工作区回滚到暂存区版本
如果回滚到暂存区后,暂存区也不想留,可输入以下命令

git restore --stage 文件名

2.8   持久化

git commit -m # 将暂存区持久化

commit可以只一部分,具体操作如下图所示:


 2.9  删除文件

        一开始,与一般的文件命令管理一样

rm 文件

        在文件删除的操作完成后,需要进行持久化

        如果文件不小心删除,要回滚回去

git restore 文件名

         前提是:修改文件已经从暂存区中拿出


http://www.ppmy.cn/news/1515718.html

相关文章

零基础学习Redis(6) -- string类型命令使用

redis中,不同的数据结构有不同的操作命令。 redis中的string是按照二进制存储的,不会对数据做任何编码转换。 1. set / get 命令 为了方便使用,redis提供了多个版本的get / set命令来操作字符串 1. set set key value [expiration EX sec…

仿Muduo库实现高并发服务器——EventLoop模块

我刚开始看这个模块时,也是看不明白,什么是事件管理模块。 此时此刻,大领导的背影,还是那么清晰。结合故事模块,慢慢理。 EventLoop模块 成员: 绿色: 利用智能指针对new出来的对象进行管理&…

工作实战-项目压测记录

1-1-1每分钟的单量 1-1-2第二版测试 2022年5月16日 17:43:11 成功 失败 其它(nginx) 真实入库单量 总单量 52 1 447 500 2022年5月16日 19:42:18 成功 失败 其它(nginx) 真实入库单量 总单量 311 689 306 1000 2-0-1. 20线程-2000单执行结果 2-1-0. 40线…

excel vba将选中区域向下复制指定次数

excel vba将选中区域向下复制指定次数 1 需求 将选中区域向下复制4次 2 选中区域 A2:F6 执行VBA,会弹出对话框,输入数字4 (表示向下复制4次) 3 复制完成 VBA code Sub CopySelection() Dim numCopies As Integ…

达芬奇18.6苹果电脑mac版下载安装教程中文汉化版

达芬奇18.6苹果电脑mac版下载安装教程中文汉化版 达芬奇软件有多个版本,MAC电脑版是运行在苹果系统上的版本。 前言 达芬奇调色工具可以实现以下效果: 色彩校正:调整视频的色彩平衡、对比度、饱和度等,使画面更加鲜艳、生动。风…

Java笔试面试题AI答之线程(18)

文章目录 103. 简述Java线程池中队列常用类型有哪些 ?1. ArrayBlockingQueue2. LinkedBlockingQueue3. SynchronousQueue4. PriorityBlockingQueue5. DelayQueue 104. 简述线程安全需要保证几个基本特征?105. 简述线程池原理以及核心参数 ?线…

javascript 对象 JSON.stringify()的使用

在JavaScript中,JSON.stringify() 是一个非常有用的函数,它用于将一个 JavaScript 对象或值转换为 JSON 格式的字符串。这通常用于将 JavaScript 对象序列化以便于存储或者通过网络传输 const obj {name: "Alice",age: 30,isStudent: false,…

基于无人机边沿相关 ------- IBUS、SBUS协议和PPM信号

文章目录 一、IBUS协议二、SBUS协议三、PPM信号 一、IBUS协议 IBUS(Intelligent Bus)是一种用于电子设备之间通信的协议,采用串行通信方式,允许多设备通过单一数据线通信,较低延迟,支持多主机和从机结构&a…