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中可以通过测试套件来解决该问题。 测试套件&…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...

Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...

【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...

实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...
LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...