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

Git 教程

目录

  • 1.简介:
  • 2.安装Git
  • 3.Git 如何工作
    • 状态
    • 区域
  • 4.使用Git
  • 5.Git配置
    • 5.1 创建仓库 - repository
    • 5.2 配置
      • 5.2.1 --global
      • 5.2.2 检查配置
  • 6. 查看工作区的文件状态
    • 6.1什么是工作区
    • 6.2 如果显示乱码的解决方式
  • 7.在工作区添加单个文件
  • 8. 添加工作区文件到暂存区
  • 9. 创建版本
  • 10. 查看提交日志
  • 11. 修改默认编辑器
  • 12. 删除
  • 13. 撤销重置
  • 14. 回退版本
  • 15. 比较
  • 16. 分支
    • 16.1 查看分支
    • 16.2 创建分支
    • 16.3 切换分支
    • 16.4 分支合并
    • 16.5 删除分支
    • 16.6 合并记录
    • 16.7 rebase 操作
    • 16.8 合并冲突
  • 17 标签
  • 总结

1.简介:

Git是目前世界上最先进的分布式版本控制系统,在处理各种项目时都十分高效,而且非常的高大上。

Git分布式版本控制系统,它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。


2.安装Git

  • 可以前往Git官网安装Git
  • 按照默认程序安装即可
  • 安装完成后,打开Git bash软件,弹出一个类似cmd的命令行窗口,证明安装成功。
    在这里插入图片描述

3.Git 如何工作

首先,要了解两个概念

  • 状态
  • 区域

状态

git提供了三种(也可以说是四种)不同的记录状态已修改(modified)已暂存(staged)已提交(committed)
有一个特殊的状态未追踪(Untracked)

区域

git 提供了三个不同的工作区,用来存放不同的内容工作目录暂存区域Git 仓库

在这里插入图片描述

4.使用Git

  • 首先创建一个新的文件夹
    在这里插入图片描述
  • 选中文件夹路径并输入cmd进入
  • 在这里面输入相关的git指令操作git
    在这里插入图片描述
  • git工作流程
    在这里插入图片描述

5.Git配置

5.1 创建仓库 - repository

  • 进入刚打开的空文件的黑窗口输入git init初始化仓库
git init
  • 该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这个目录也是上面我们说的三个区域之一,这个目录也是 Git 保存数据记录的地方,非常重要,如非必要,不要轻易改动
  • 当一个项目被 Git 初始化以后,只是表示我们希望通过 Git 来管理当前的这个项目文件的不同时期版本记录,但是这个时候项目中已存在的文件,或者以后新增的文件都是没有进入版本控制管理的,它们是 未追踪(Untracked) 的状态

5.2 配置

  • 当安装完 Git 应该做的第一件事就是设置你的用户名称邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改

      git config user.name "你的姓名"git config user.email "你的邮箱"
    

5.2.1 --global

  • 通过 --global 选项可以设置全局配置信息

      git config --global user.name "你的姓名"git config --global user.email "你的邮箱"
    

5.2.2 检查配置

# 打印所有config
git config --list
# 打印指定config
git config user.name

6. 查看工作区的文件状态

git status
该指令就是查看工作区的文件状态

6.1什么是工作区

  • 当前的文件夹即为现在的工作区
  • 在这里插入图片描述

6.2 如果显示乱码的解决方式

1. git status 显示乱码

git config --global core.quotepath false

终端乱码

进入windoes的cmd 然后分别输入以下五行
git config --global core.quotepath false
git config --global gui.encoding utf-8
git config --global i18n.commit.encoding utf-8
git config --global i18n.logoutputencoding utf-8
set LESSCHARSET=utf-8

7.在工作区添加单个文件

  • cd .> 文件名

      cd  .> 1.txt这样就能在工作区添加一个名为1.txt的文件打开文件直接文件名加后缀即可1.txt  即可打开文件
    

8. 添加工作区文件到暂存区

  • git add
    git add 1.txt
    # 添加多个文件
    git add 2.txt 3.txt
    # 添加整个目录
    git add ./a
    # 添加多个目录
    git add ./b ./c
    # 添加所有文件
    git add .
    
  • 未提交状态
    在这里插入图片描述
  • 提交状态
    在这里插入图片描述

9. 创建版本

  • git commit
将暂存区里的改动给提交到本地 git 仓库,也就是为这次工作
(一般会把某个具有特定意义的工作作为一个版本,它可以是多个文件的变化)
每次提交同时会生成一个 40 位的哈希值,作为该次提交版本的唯一 id
每次提交都需要填写备注信息
git commit
# 会调用默认(或自定义)的文本编辑器

这样即为成功
在这里插入图片描述
退出为:
先按esc键,然后输入::wq即可

单行备注
git commit -m 备注信息

这样即为成功在这里插入图片描述

修复提交
git commit --amend -m 提交
修复(替换上一次)提交,在不增加一个新的提交版本的情况下将新修改的代码追加到前一次的提交中

10. 查看提交日志

  • git log
// 完整格式
git log
// 简要格式(单行)
git log --oneline

这样即为成功
在这里插入图片描述

commit dbdeb5f6c7ea0e33497f1a906ffca2e60a12acd9 (HEAD -> master)这行是你提交时生成的秘钥回退版本时能用到

11. 修改默认编辑器

  • 这个指令即为修改常用编辑器
git config core.editor 你常用的编辑器名字

打开一个vue文件如果弹出编辑器即为成功

12. 删除

  • git rm
# 从 git 仓库与工作区中删除指定文件
git rm 文件# 只删除 git 仓库中的文件
git rm --cached 文件# rm 以后,需要 commit 这次操作,否则 rm 将保留在暂存区
git commit -m 修正

删除状态:
在这里插入图片描述
修正状态:
在这里插入图片描述

13. 撤销重置

  • git reset
从暂存区中撤销到工作区
// 从暂存区中撤销一个指定文件
git reset HEAD 文件名称
// 从暂存区撤销所有文件
git reset HEAD .

撤销状态
在这里插入图片描述

14. 回退版本

# 回退到指定的 commitID 版本
git reset --hard commitID
commitID为你保存到仓库里面的秘钥

回退状态
在这里插入图片描述

15. 比较

# 比较 工作区和暂存区
git diff 文件 
# 比较 暂存区和仓库
git diff --cached [commitId] 文件
# 比较 工作区和仓库
git diff commitId filename
# 比较 仓库不同版本
git diff commitId1 commitId2

16. 分支

我们的开发就像是游戏的任务,默认是在主线(master)上进行开发的。
许多时候,还有各种支线任务,git 支持我们创建分支来进行项目开发

16.1 查看分支

git branch

16.2 创建分支

git branch 分支名称

16.3 切换分支

git checkout 分支名称
# 也可以使用 checkout -b 来新建分支
git checkout -b 分支名称

分支状态
在这里插入图片描述

16.4 分支合并

# B 合并到 A,需要切换到 A 分支
git merge 被合并分支# 查看已经合并的分支
git branch --merged
# 查看未合并的分支
git branch --no-merged

16.5 删除分支

# 如果分支为未合并状态,则不允许删除
git branch -d 分支名称
# 强制删除
git branch -D 分支名称

分支状态
在这里插入图片描述

16.6 合并记录

  • rebase
# 合并 HEAD 前两个祖先记录
git rebase -i HEAD~2

~ 与 ^

~ : 纵向

^ : 横向
请添加图片描述

16.7 rebase 操作

# p, pick = use commit => 使用
# r, reword = use commit, but edit the commit message => 使用,但重新编辑说明
# e, edit = use commit, but stop for amending => 使用
# s, squash = use commit, but meld into previous commit => 使用,但合并上一次
# f, fixup = like "squash", but discard this commit's log message => 就像 squash 那样,但会抛弃这个 Commit 的 Commit message
# x, exec = run command (the rest of the line) using shell => 执行脚本
# d, drop = remove commit => 移除
git rebase -i HEAD~3
# 弹出编辑器,根据需要的进行修改,然后保存
# 如果为 r,s 则会再次弹出编辑器,修改新的 commit message,修改之后保存

如果出现一些问题,可以通过 git rebase --edit-todogit rebase --continue 进行重新编辑保存

16.8 合并冲突

有的时候,不同的分支可能会对同一个文件内容和位置上进行操作,这样在合并的过程中就会产生冲突

  • 查看冲突文件
  • 修复冲突内容
  • 提交

合并冲突请添加图片描述
请添加图片描述
请添加图片描述

17 标签

有的时候,我们希望给某一个特定的历史提交打上一些标签

  • 新建tag
git tag -a v1.0.0 HEAD/commitId
  • 查看tag
git tag

输入完成按完回车键会弹出下图即为成功
在这里插入图片描述

总结

以上就是Git本地仓库的讲解及常用指令的具体使用和效果展示以后也会推出远程仓库的讲解和使用方法。希望本篇文章能够帮助到你,不懂得可以评论区或者私信问我,我也会一 一解答。谢谢观看!
我的其他文章:https://blog.csdn.net/m0_60970928?type=blog

相关文章:

Git 教程

目录1.简介:2.安装Git3.Git 如何工作状态区域4.使用Git5.Git配置5.1 创建仓库 - repository5.2 配置5.2.1 --global5.2.2 检查配置6. 查看工作区的文件状态6.1什么是工作区6.2 如果显示乱码的解决方式7.在工作区添加单个文件8. 添加工作区文件到暂存区9. 创建版本10…...

一种全新的图像滤波理论的实验(二)

一、前言 2021年12月31日,我发布了基于加权概率模型的图像滤波算法的第一个实验,当时有两个关键问题没有解决: 1、出现了大面积的黑色区域,最近考虑把这个算法实际应用在图像和视频的压缩领域,于是通过对程序的分析&a…...

Boost库文档搜索引擎

文章目录综述效果展示去标签化,清理数据构建索引用户查询综述 该项目使用了BS架构,实现了用户对Boost库进行站内搜索的功能, 用户输入关键字使用http协议通过ajax将数据发送给后端服务器,后端进行分词, 通过倒排索引…...

Linux中安装JDK

Linux中安装JDK一 、下载JDK包1、下载网址2、往下翻,找到 java83、继续往下翻找到要下载的版本 64位linux版本二 上传jdk安装包三 开始安装整体过程1、解压文件2、查看解压文件3、进入解压文件夹确认4、配置环境变量5、重新加载环境变量6、确认安装成功一 、下载JDK…...

宝塔面板公网ip非80端口非443端口部署ssl

有不少人使用家用宽带,虽然申请下来了公网ip,但是运营商封了80与443端口,但仍想使用ssl证书 一、仅封80端口 1、先在宝塔面板里创建网站,域名为test.xxx.cn:8085 2、再到域名运营商做A记录解析,此时可以通过http://…...

手撕八大排序(上)

排序的概念及其引用: 排序的概念: 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个具有…...

clickhouse 怎么统计每天0点到10点的某个字段的数据量

比喻&#xff1a;统计最近一周0点到10点期间每天id的数量 日期&#xff1a;2023-03-23 09:02:22 日期全是这种格式 第一步先把日期转小时&#xff1a;先把小于10小时的查出来 toHour(card_time)<10 select toDate(t.dates) as dates,sum(t.count) as count from ( se…...

[qiankun]-图片加载问题

[qiankun]-图片加载问题开发版本图片加载报错现象描述分析解决方案base64的展示格式静态资源的展示方式取消hash的取值方式&#xff0c;并在主应用中添加图片设置图片的绝对路径根据环境动态设置图片的绝对路径nginx转发方式开发版本 "vue": "^3.2.45", &…...

关于upstream的八种回调方法

1 creat_request调用背景&#xff1a;用于创建自己模板与第三方服务器的第一次连接步骤1&#xff09; 在Nginx主循环&#xff08;ngx_worker_process_cycle方法&#xff09; 中&#xff0c;会定期地调用事件模块&#xff0c; 以检查是否有网络事件发生。2&#xff09; 事件模块…...

0303泰勒公式-微分中值定理与导数的应用

文章目录1 引入2 泰勒中值定理2.1 泰勒多项式3.2 泰勒中值定理13.3 泰勒中值定理22.4 误差估计4 麦克劳林公式5 常见麦克劳林公式6 泰勒公式相关例题6.1 将函数展成指定的泰勒公式6.1.1 公式法6.1.2 间接展法&#xff08;变量替换&#xff09;6.2 利用泰勒公式求极限6.3 确定无…...

日常运维基础命令

commandexplainps -f -u user_name显示指定用户的进程ps aux --sort-pcpu,pmem先以cpu使用量进行排序&#xff0c;cpu使 用一样&#xff0c;以内存使用率排序ps -ef --forest显示ACLII进程数ps --ppid 28208显示父进程的子进程ps -p 14447 -L显示进程的线程ps -e -o pid&#x…...

人员行为识别系统 TensorFlow

人员行为识别系统人员行为识别系统通过TensorFlow深度学习技术&#xff0c;人员行为识别算法对画面中区域人员不按要求穿戴、违规抽烟打电话、睡岗离岗以及作业流程不规范实时分析预警&#xff0c;发现违规行为立即抓拍告警。深度学习应用到实际问题中&#xff0c;一个非常棘手…...

ES-倒排索引BKD原理skiplist

1.Elasticsearch数据存储结构FST、skiplist、BKD-tree、LSM-tree Elasticsearch数据结构存储流程_善思的博客-CSDN博客_elasticsearch 数据结构 number?keyword?傻傻分不清楚 - Elastic 中文社区 ElasticSearch实战&#xff08;六&#xff09;-Skip List 跳表算法&#xf…...

每天一道大厂SQL题【Day12】微众银行真题实战(二)

每天一道大厂SQL题【Day12】微众银行真题实战(二) 大家好&#xff0c;我是Maynor。相信大家和我一样&#xff0c;都有一个大厂梦&#xff0c;作为一名资深大数据选手&#xff0c;深知SQL重要性&#xff0c;接下来我准备用100天时间&#xff0c;基于大数据岗面试中的经典SQL题&…...

带您了解TiDB MySQL数据库中关于日期、时间的坑

带您了解TiDB & MySQL数据库中关于日期、时间的坑时间的基础知识什么是时间计算时间的几种方法世界时&#xff08;UT&#xff09;协调世界时&#xff08;UTC&#xff09;国际原子时&#xff08;TAI&#xff09;时区的概念中国所在的时区操作系统的时区datetimedatectl数据库…...

【华为OD机试模拟题】用 C++ 实现 - 求字符串中所有整数的最小和

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…...

harbor 仓库迁移升级

harbor 仓库迁移升级 harbor仓库安装数据传输仓库切换版本 v1.8.0 v2.3.5 harbor仓库安装 环境准备&#xff1a;安装docker详见&#xff1a;docker 的介绍和部署&#xff0c;并下载docker-compose详见&#xff1a;docker 三剑客compose。 现有支持的安装harbor仓库的方式有两…...

评论功能设计思路~

文章目录 评论功能设计框架1、定义2、目标3、动机4、评论类别**5、评论互动****6、评论区展示结构****6.1 主题式****6.2 平铺式****6.3 盖楼式****7、评论排序机制****8、评论加载形式****9、其他**结语评论功能设计框架 1、定义 评论是指针对于事物进行主观或客观的自我印象…...

算法训练营 day52 动态规划 买卖股票的最佳时机系列1

算法训练营 day52 动态规划 买卖股票的最佳时机系列1 买卖股票的最佳时机 121. 买卖股票的最佳时机 - 力扣&#xff08;LeetCode&#xff09; 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票…...

3.基于分割的文本检测算法--DBNet++

文章目录1.概况2.DBNet中的主要方法2.1 网络结构2.2 适应特征图融合模块(Adaptive Scale Fusion Module, ASF)3.ASF模块的源码实现参考资料欢迎访问个人网络日志&#x1f339;&#x1f339;知行空间&#x1f339;&#x1f339; 1.概况 2022年02月份论文&#xff1a;Real-Time S…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...