git的基本命令操作超详细解析教程
Git基础教学
- 1、初始化配置
- 2、初始化仓库
- 3、工作区域和文件状态
- 4、添加和提交文件
- 5、git reset 回退版本
- 6、git diff查看差异
- 7、删除文件git rm
- 8、.gitignore
- 9、本地文件提交到远程仓库
- 10、分支基础
Git:一个开源的分布式版本控制系统,它可以在本地和远程仓库之间管理源代码和文档的版本。推荐有Linux基本命令的基础学习更佳,学起来不会枯燥、乏味。
1、初始化配置
Git安装网址
查看Git版本,检测是否安装成功
git --version
配置用户名和邮箱,保存用户名和密码,不用每一次都输入
git config --global user.name "Deng ZJ"
git config --global user.email Deng@gmail.com
git config --global credentia.helper store
查看配置信息
git config --global --list
结果如下

2、初始化仓库
创建仓库一般有两种方式
1、本地直接创建一个仓库
2、远程服务器上克隆一个存在的仓库
2-1 首先创建一个文件目录,切换文件路径
mkdir learn-git
cd learn-git
在本地文件目录learn-git中执行命令 git init,将这个目录变成 Git 仓库。系统命令窗口回显已经初始化了一个空的仓库,且路径行出现一个master分支
git init

输入 ls -a,即查看当前目录下的文件(包括带.的隐藏文件),-a参数:显示隐藏文件
其中.git隐藏文件里是get仓库的组成部分,不要随意增删改查

删除仓库,master标志也会消失
rm -rf .git

2-2 新建仓库,取名为my-repo的仓库,就会在my-repo文件夹下生成仓库
git init my-repo
进入my-repo仓库
cd my-repo
2-3 Github远程使用git clone命令获取仓库
git clone https://github.com/geekhall-laoyang/remote-repo.git

如何找到地址,如下图所示

2-4 修改分支名master方法
在C:\Users\Administrator找到.gitconfig文件,打开后添加下面两行指令即可

[init]defaultBranch = main
3、工作区域和文件状态
工作区域分为:工作区、暂存区、本地仓库
工作区:本地计算机上存储项目代码的目录,所有文件都可以进行修改和编辑
暂存区(也称为索引区): Git 用于存储将要提交到本地仓库的修改的地方,看作是一个缓冲区,用于暂时存储修改。
本地仓库:是指 Git 存储项目历史记录的地方,它保存了项目的每一次提交,每个提交都包含了一个快照和提交信息。本地仓库是工作区和暂存区的最终目的地,是 Git 进行版本控制的核心。
文件的三种状态已修改(modified),已暂存(staged),已提交(committed)。


文件状态如下图所示:

4、添加和提交文件
简洁版看结尾处
4-1 由于之前创建了一个仓库,现在来创建一个新的文件file1.txt,并输入hello world
echo "hello world" > file1.txt
查看文件内容
cat file1.txt

查看仓库的状态
git status

添加到暂存区
git add file1.txt

提交文件,只会提交暂存区的文件
再新创建一个文件file2.txt,进行提交文件时,只提交暂存区的file1.txt, ,-m参数:提交信息
git commit -m "第一次提交"

4-2 通过通配符*来add添加多个文件
git add *.txt

4-3 添加当前文件夹的所有文件(用. 表示)到暂存区
git add .
提交文件,不带m参数就会进入vim文件编辑器(不会使用需学习Linux基础知识)界面,首行编辑第二次提交即可,vim的使用方法自行查阅
进入界面,先输入i进入编辑界面,编辑文字这是第二次提交后,按Esc退出输入模式。进入命令模式,界面输入:wq即可
git commit

查看提交历史记录
git log


总结:
| git status | 查看仓库的状态 |
|---|---|
| git add | 添加到暂存区 通配符添加多个以 .txt结尾的文件 git add *.txt 添加当前目录下的所有文件 git add . |
| git commit | 提交 只提交 暂存区的文件,不会提交工作区的 |
| git log | 查看仓库提交历史记录 添加 --oneline参数可查看简洁的历史记录 |
| git commit -a -m “输入信息” | 一次性完成添加和暂存 |
5、git reset 回退版本
三个参数 soft、hard、mixed
| 工作区内容 | 暂存区内容 | |
|---|---|---|
git reset –soft | 保留 | 保留 |
git reset –hard | 清空 | 清空 |
git reset –mixed(默认参数) | 保留 | 清空 |
创建一个名为repo的仓库,创建三个文件,并分别添加后提交共三次,并使用git log --oneline查看提交简洁记录


依次复制repo创建三个仓库
cp -rf repo repo-soft
cp -rf repo repo-hard
cp -rf repo repo-mixed
进入命名为soft的仓库,进行soft方式的版本回退

5-1 --soft 后面接回退的版本号,那么我们回退到第二次提交的版本号
git reset --soft fe6c3eb

此时分别查看工作区和暂存区的情况,应当都是被保留的

5-2 --hard参数 HARD^ 表示回退到上一个版本
git reset --hard 版本号
或者
git reset -hard HEAD^

此时分别查看工作区和暂存区的情况,file3的文件应当都是被清空的

5-3 --mixed 默认参数可以不加
回退到上一个版本
git reset --mixed HEAD^
此时工作区file3文件保留和暂存区文件清空

总结:
| 工作区内容 | 暂存区内容 | |
|---|---|---|
git reset –soft | 保留 | 保留 |
git reset –hard | 清空 | 清空 |
git reset –mixed(默认参数) | 保留 | 清空 |
6、git diff查看差异
查看工作区、暂存区、本地仓库之间的差异,查看不同版本之间的差异或者不同分支之间。
使用上一节创建的repo仓库,并里面vim命令修改file3.txt文件内容333变为4444后,使用命令查看差异
不加参数,默认比较工作区和暂存区之间的差异
git diff

工作区和版本库之间的差异
git diff HEAD
暂存区和版本库之间的差异
git diff --cached
比较版本差异,只需要加入版本的ID即可
git diff 9ff62d0 e27c26b
HEAD标志指向分支的最新节点,比较当前版本HEAD和上一个版本HEAD^(HEAD~)之间的差异
git diff HEAD^ HEAD
git diff HEAD~ HEAD
7、删除文件git rm
可以一次性删除工作区和暂存区的相同文件
git rm file2.txt

删除版本库的文件
git rm --cached 文件名
删除的文件需要提交到版本库中,这样版本库中的文件才能被删除
git commit -m "delete file"
8、.gitignore
需要适当的忽略一些临时缓存文件或者敏感文件添加到版本库中
克隆仓库
git clone 克隆地址
推送更新内容到远程仓库
git push
拉取更新内容到本地仓库,并进行一次合并操作
git pull
只拉去修改的内容到本地仓库
git fetch
9、本地文件提交到远程仓库
首先进入github官网,点击右上角New按钮,新建一个仓库。

这里我以将本地的coco数据集文件上传到github为例进行演示
1、创建一个本地仓库,并将文件移动到本地仓库中


2、提交到本地仓库
git add .
git commit -m "first commit"
git log

3、上传到远程仓库
git remote add origin git@github.com:DengZhengJ/coco-repo.git
git branch -M main
git push -u origin main
显示最后一行,即上传完成。刷新github界面就可以看见上传的本地文件


10、分支基础

利用GitKraken图形化工具展现,可到git官网下载。
首先在main创建main1、2、3分别提交三次,在dev分支中创建dev1、dev2分别提交二次,然后在main中创建main4、main5提交二次。

查看当前仓库的所有分支
git branch
创建一个名为dev的新分支
git branch dev
切换到新的分支,两个都可
//git checkout dev
git switch dev

未合并,所以main分支还是原来的内容


将不同的分支进行合并到当前分支,在master分支中合并dev分支
git merge dev

当一个分支已经被合并到其他分支时,就可以删除已经合并的分支,没有合并的用-D参数强制删除
git branch -d dev
| 查看分支列表 | git branch |
|---|---|
| 创建分支 | git branch 分支名 |
| 切换分支 | git switch 分支名 |
| 合并分支 | git merge 分支名 |
| 删除分支 | git branch -d 分支名(已合并) git branch -D 分支名(未合并) |
Rebase操作

以上笔记借鉴于b站视频,以备复习使用。参考:bilibili 网站——【GeekHour】一小时Git教程
相关文章:
git的基本命令操作超详细解析教程
Git基础教学 1、初始化配置2、初始化仓库3、工作区域和文件状态4、添加和提交文件5、git reset 回退版本6、git diff查看差异7、删除文件git rm8、.gitignore9、本地文件提交到远程仓库10、分支基础 Git:一个开源的分布式版本控制系统,它可以在本地和远程…...
【代码】两阶段鲁棒优化/微电网经济调度入门到编程
内容包括 matlab-yalmipcplex微电网两阶段鲁棒经济调度(刘) matlab-yalmipcplex两阶段鲁棒微电网容量经济优化调度 两阶段鲁棒优化CCG列于约束生成和Benders代码,可扩展改编,复现自原外文论文 【赠送】虚拟储能单元电动汽车建…...
【图论】重庆大学图论与应用课程期末复习资料2-各章考点(填空证明部分)(私人复习资料)
图论各章考点 一、图与网络的基本概念二、树三、连通性四、路径算法五、匹配六、行遍性问题七、平面图 一、图与网络的基本概念 生成子图:生成子图 G ’ G’ G’中顶点个数V’必须和原图G中V的数量相同,而 E ’ ∈ E E’∈E E’∈E即可。顶点集导出子图…...
基于Intel® AI Analytics Toolkits的智能视频监控系统
【oneAPI DevSummit & OpenVINODevCon联合黑客松】 跳转链接:https://marketing.csdn.net/p/d2322260c8d99ae24795f727e70e4d3d 目录 1方案背景 2方案描述 3需求分析 4技术可行性分析 5详细设计5.1数据采集 5.2视频解码与帧提取 5.3人脸检测 5.4行为识别…...
深度学习中的注意力机制:原理、应用与实践
深度学习中的注意力机制:原理、应用与实践 摘要: 本文将深入探讨深度学习中的注意力机制,包括其原理、应用领域和实践方法。我们将通过详细的解析和代码示例,帮助读者更好地理解和应用注意力机制,从而提升深度学习模…...
将本地项目推送到github
欢迎大家到我的博客浏览。将本地项目推送到github | YinKais Blog 本地项目上传至 GitHub<!--more--> 1、进入项目根目录,初始化本地仓库 git init 2、创建密钥:创建 .ssh 文件夹,并进入 .ssh 文件夹 mkdir .ssh cd .ssh/ 3、生成…...
[读论文]meshGPT
概述 任务:无条件生成mesh (无颜色)数据集:shapenet v2方法:先trian一个auto encoder,用来获得code book;然后trian一个自回归的transformermesh表达:face序列。face按规定的顺序&a…...
反序列化漏洞详解(一)
目录 一、php面向对象 二、类 2.1 类的定义 2.2 类的修饰符介绍 三、序列化 3.1 序列化的作用 3.2 序列化之后的表达方式/格式 ① 简单序列化 ② 数组序列化 ③ 对象序列化 ④ 私有修饰符序列化 ⑤ 保护修饰符序列化 ⑥ 成员属性调用对象 序列化 四、反序列化 …...
键盘打字盲打练习系列之指法练习——2
一.欢迎来到我的酒馆 盲打,指法练习! 目录 一.欢迎来到我的酒馆二.开始练习 二.开始练习 前面一个章节简单地介绍了基准键位、字母键位和数字符号键位指法,在这个章节详细介绍指法。有了前面的章节的基础练习,相信大家对盲打也有了…...
小程序----使用图表显示数据--canvas
需求:在小程序上实现数据可视化 思路:本来想用的是echarts或者相关的可视化插件,但因为用的是vue3,大多数插件不支持,所以用了echarts,但最后打包的时候说包太大超过2M无法上传,百度了一下&…...
⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
1.这里我代码没啥问题~~~编辑器里也没毛病 void Start(){// 加载底图和上层图片string backgroundImagePath Application.streamingAssetsPath "/background.jpg";Texture2D backgroundTexture new Texture2D(2, 2);byte[] backgroundImageData System.IO.File.R…...
document
原贴连接 1.在整个文档范围内查询元素节点 功能API返回值根据id值查询document.getElementById(“id值”)一个具体的元素节根据标签名查询document.getElementsByTagName(“标签名”)元素节点数组根据name属性值查询document.getElementsByName(“name值”)元素节点数组根据类…...
NodeJS(二):npm包管理工具、yarn、npx、pnpm工具等
目录 (一)npm包管理工具 1.了解npm 2.npm的配置文件 常见的配置属性 scripts属性*** 依赖的版本管理 3.npm安装包的细节 4.package-lock文件 5.npm install原理** 6.npm的其他命令 (二) 其他包管理工具 1.yarn工具 基本指令 2.cnpm工具 3.npx工具 (1)执行本地…...
day3 移出链表中值为x的节点
ListNode* removeElements(ListNode* head, int val) { ListNode* dummyHead new ListNode(0); // 设置一个虚拟头结点 dummyHead->next head; // 将虚拟头结点指向head,这样方便后面做删除操作 ListNode* cur dummyHead; while (cur->next ! NULL…...
浅谈 Guava 中的 ImmutableMap.of 方法的坑
作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《EffectiveJava》独家解析》专栏作者。 热门文章推荐&…...
Symbol()和迭代器生成器
目录 1、Symbol() 2、迭代器生成器 执行流程 模拟生成器函数 for of 遍历迭代选择器 yield * Generator函数应用 1、Symbol() Symbol表示独一无二的值 const s1 Symbol(a)const s2 Symbol(a)console.log(s1 s2) // fa…...
USB Type-C的基本原理
1 USB Type-C的基本原理 1.1 基本特性 Figure 1-1 USB Type-C接头外形 USB Type-C(简称USB-C)的基本特性: 1. 接口插座的尺寸与原来的Micro-USB规格一样小,约为8.3mm X 2.5mm 2. 可承受1万次反复插拔 3. 支持正反均可插入的“正反…...
HarmonyOS开发(八):动画及网络
1、动画概述 在ArkUI中,产生动画的方式是改变组件属性值并且指定相关的动画参数。当属性值发生变化后,按照动画参数,从原来的状态过渡到新的状态,就形成一个动画。 动画的相关参数如下: 属性名称 属性类型 默认值 …...
Pinctrl子系统和GPIO子系统
Pinctrl子系统: 借助Princtr子系统来设置一个Pin的复用和电气属性; pinctrl子系统主要做的工作是:1. 获取设备树中的PIN信息;2.根据获取到的pin信息来设置的Pin的复用功能;3.根据获取到的pin信息去设置pin的电气特性…...
Unittest单元测试框架之unittest构建测试套件
构建测试套件 在实际项目中,随着项目进度的开展,测试类会越来越多,可是直到现在我 们还只会一个一个的单独运行测试类,这在实际项目实践中肯定是不可行的,在 unittest中可以通过测试套件来解决该问题。 测试套件&…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
