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

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 回退版本

三个参数 softhardmixed

工作区内容暂存区内容
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、进入项目根目录&#xff0c;初始化本地仓库 git init 2、创建密钥&#xff1a;创建 .ssh 文件夹&#xff0c;并进入 .ssh 文件夹 mkdir .ssh cd .ssh/ 3、生成…...

[读论文]meshGPT

概述 任务&#xff1a;无条件生成mesh &#xff08;无颜色&#xff09;数据集&#xff1a;shapenet v2方法&#xff1a;先trian一个auto encoder&#xff0c;用来获得code book&#xff1b;然后trian一个自回归的transformermesh表达&#xff1a;face序列。face按规定的顺序&a…...

反序列化漏洞详解(一)

目录 一、php面向对象 二、类 2.1 类的定义 2.2 类的修饰符介绍 三、序列化 3.1 序列化的作用 3.2 序列化之后的表达方式/格式 ① 简单序列化 ② 数组序列化 ③ 对象序列化 ④ 私有修饰符序列化 ⑤ 保护修饰符序列化 ⑥ 成员属性调用对象 序列化 四、反序列化 …...

键盘打字盲打练习系列之指法练习——2

一.欢迎来到我的酒馆 盲打&#xff0c;指法练习&#xff01; 目录 一.欢迎来到我的酒馆二.开始练习 二.开始练习 前面一个章节简单地介绍了基准键位、字母键位和数字符号键位指法&#xff0c;在这个章节详细介绍指法。有了前面的章节的基础练习&#xff0c;相信大家对盲打也有了…...

小程序----使用图表显示数据--canvas

需求&#xff1a;在小程序上实现数据可视化 思路&#xff1a;本来想用的是echarts或者相关的可视化插件&#xff0c;但因为用的是vue3&#xff0c;大多数插件不支持&#xff0c;所以用了echarts&#xff0c;但最后打包的时候说包太大超过2M无法上传&#xff0c;百度了一下&…...

⭐ 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&#xff0c;这样方便后面做删除操作 ListNode* cur dummyHead; while (cur->next ! NULL…...

浅谈 Guava 中的 ImmutableMap.of 方法的坑

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《EffectiveJava》独家解析》专栏作者。 热门文章推荐&…...

Symbol()和迭代器生成器

目录 1、Symbol&#xff08;&#xff09; 2、迭代器生成器 执行流程 模拟生成器函数 for of 遍历迭代选择器 yield * Generator函数应用 1、Symbol&#xff08;&#xff09; 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&#xff08;简称USB-C&#xff09;的基本特性&#xff1a; 1. 接口插座的尺寸与原来的Micro-USB规格一样小&#xff0c;约为8.3mm X 2.5mm 2. 可承受1万次反复插拔 3. 支持正反均可插入的“正反…...

HarmonyOS开发(八):动画及网络

1、动画概述 在ArkUI中&#xff0c;产生动画的方式是改变组件属性值并且指定相关的动画参数。当属性值发生变化后&#xff0c;按照动画参数&#xff0c;从原来的状态过渡到新的状态&#xff0c;就形成一个动画。 动画的相关参数如下&#xff1a; 属性名称 属性类型 默认值 …...

Pinctrl子系统和GPIO子系统

Pinctrl子系统&#xff1a; 借助Princtr子系统来设置一个Pin的复用和电气属性&#xff1b; pinctrl子系统主要做的工作是&#xff1a;1. 获取设备树中的PIN信息&#xff1b;2.根据获取到的pin信息来设置的Pin的复用功能&#xff1b;3.根据获取到的pin信息去设置pin的电气特性…...

Unittest单元测试框架之unittest构建测试套件

构建测试套件 在实际项目中&#xff0c;随着项目进度的开展&#xff0c;测试类会越来越多&#xff0c;可是直到现在我 们还只会一个一个的单独运行测试类&#xff0c;这在实际项目实践中肯定是不可行的&#xff0c;在 unittest中可以通过测试套件来解决该问题。 测试套件&…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

Vue ③-生命周期 || 脚手架

生命周期 思考&#xff1a;什么时候可以发送初始化渲染请求&#xff1f;&#xff08;越早越好&#xff09; 什么时候可以开始操作dom&#xff1f;&#xff08;至少dom得渲染出来&#xff09; Vue生命周期&#xff1a; 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...