【Git】版本控制器详解之git的概念和基本使用
版本控制器git
- 初始Git
- git的安装
- git的基本使用
- 初始化本地仓库
- 配置本地仓库
- 三区协作
- 添加---add
- 修改文件--status|diff
- 版本回退--reset
- 撤销修改
- 删除文件
初始Git
为了能够更⽅便我们管理不同版本的⽂件,便有了版本控制器。所谓的版本控制器,就是⼀个可以记录⼯程的每⼀次改动和版本迭代的⼀个管理系统,同时也⽅便多⼈协同作业。
目前最主流的版本控制器就是Git。Git可以控制电脑上所有格式的文件,例如doc、excel、dwg、dgn、rvt等等。对于开发⼈员来说,Git最重要的就是可以帮助我们管理软件开发项⽬中的源代码文件
git的安装
Centos7.9下安装git
查看是否安装git
git --version
//没有则使用yum安装
sudo yum -y install git
git的基本使用
初始化本地仓库
git init
执行完毕后会生成一个隐藏的.git文件,内含有配置信息
配置本地仓库
当安装Git后⾸先要做的事情是设置你的用户名、e-mail地址
#设置配置
[wmh@pDaD gitcode]$ git config user.name "wmh"
[wmh@pDaD gitcode]$ git config user.email "66666@qq.com"
#查看配置
[wmh@pDaD gitcode]$ git config -l
user.email=66666@qq.com
user.name=wmh
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true#删除配置
[wmh@pDaD gitcode]$ git config --unset user.name
[wmh@pDaD gitcode]$ git config --unset user.email
[wmh@pDaD gitcode]$ git config -l
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
配置全局生效
全局的配置必须使用全局的删除
[wmh@pDaD gitcode]$ git config --global user.name "wmh"
[wmh@pDaD gitcode]$ git config --global user.email "66666@qq.com"[wmh@pDaD gitcode]$ git config --global --unset user.name
[wmh@pDaD gitcode]$ git config --global --unset user.email
三区协作

.git:版本库,虽然在工作区,但是不属于工作区
code:工作区;用来写代码的文件或者是目录

刚创建的myfile是不会被git管理起来的,需要先add到暂存区,然后commit到版本库的master分支下,暂存区和master下存储的都是git对象
添加—add
git add . #把当前目录所有文件添加到暂存区
git commit -m “注释” #把暂存区内容交付给版本库
git log #显示日志
[wmh@pDaD code]$ git add .
[wmh@pDaD code]$ git commit -m "first file"
[master (root-commit) bd3f11d] first file1 file changed, 0 insertions(+), 0 deletions(-)create mode 100644 myfile
[wmh@pDaD code]$ touch myfile2
[wmh@pDaD code]$ git add myfile2
[wmh@pDaD code]$ git commit -m "add new file"
[master 0857536] add new file1 file changed, 0 insertions(+), 0 deletions(-)create mode 100644 myfile2
[wmh@pDaD code]$ git log
commit 0857536013e6b5c890d2fa0ba454041e30bfab15
Date: Wed Aug 9 17:16:36 2023 +0800add new filecommit bd3f11df093e0e559697f0a2989a32843c30783b
Date: Wed Aug 9 17:15:41 2023 +0800first file
[wmh@pDaD code]$ git log --pretty=online
fatal: invalid --pretty format: online
[wmh@pDaD code]$ git log --pretty=oneline
0857536013e6b5c890d2fa0ba454041e30bfab15 add new file
bd3f11df093e0e559697f0a2989a32843c30783b first file
观察.git文件结构变化

在.git文件里,可以看到出现了index(暂存区),前面说道HEAD指向master,通过cat .git/HEAD查到了master;接着查看master内容结果是一串哈希摘要,并且与object第一个字符串相同,其实就是git对象,通过深度查阅哈希摘要发现有tree、parent等字段,parent对应的是上一个commit对象,再细细追究,就是修改的文件内容
修改文件–status|diff
git status 命令⽤于查看在你上次提交之后是否有对⽂件进⾏再次修改
git diff [file] 命令⽤来显示暂存区和⼯作区文件的差异

也可以使⽤ git diff HEAD – [file] 命令来查看版本库和⼯作区⽂件的区别
当使用git add之后,再次查看,发现少了一行,完成完整的操作流程,最后就会显示没用什么可以commit的了

版本回退–reset
执行 git reset 命令⽤于回退版本,可以指定退回某⼀次提交的版本。
要解释⼀下“回退”本质是要将版本库中的内容进行回退,⼯作区或暂存区是否回退由命令参数决定:
git reset 命令语法格式为: git reset [--soft | --mixed | --hard] [HEAD]
• --mixed 为默认选项,使⽤时可以不⽤带该参数。该参数将暂存区的内容退回为指定提交版本内
容,⼯作区⽂件保持不变。
• --soft 参数对于⼯作区和暂存区的内容都不变,只是将版本库回退到某个指定版本。
• --hard 参数将暂存区与⼯作区都退回到指定版本。切记⼯作区有未提交的代码时不要用这个命
令,因为⼯作区会回滚,你没有提交的代码就再也找不回了,所以使用该参数前⼀定要慎重。
• HEAD 可直接写成commit id,表示指定退回的版本

演示–hard

git log查看提交日志,找到以前的commit id
使用git reset进行回退到之前的版本,如果记得回退之前的commit id,可以再次回退
使用git reflog用于查看本地提交记录,简短的commit id也可以进行版本回退
撤销修改
情况⼀:对于工作区的代码,还没有add
git checkout -- myfile
[wmh@pDaD code]$ cat myfile
first line
second line
third line
[wmh@pDaD code]$ git checkout -- myfile
[wmh@pDaD code]$ cat myfile
first line
second line
情况⼆:已经 add ,但没有 commit
方案一:使用git reset -- mixed+git checkout
方案二:使用git reset -- hard
[wmh@pDaD code]$ cat myfile
first line
second line
shhhshsh[wmh@pDaD code]$ git add myfile
[wmh@pDaD code]$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: myfile
#
[wmh@pDaD code]$ git reset --mixed HEAD
Unstaged changes after reset:
M myfile
[wmh@pDaD code]$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: myfile
#
no changes added to commit (use "git add" and/or "git commit -a")[wmh@pDaD code]$ git checkout -- myfile
[wmh@pDaD code]$ git status
# On branch master
nothing to commit, working directory clean
情况三:已经 add ,并且也 commit 了,但还未push
直接写HEAD是当前版本
HEAD^-----上一版本
HEAD^^----上上一版本
#回退到上一个版本
git reset --hard HEAD^
删除文件
已经 add ,并且也 commit 了的文件,要删⽂件,除了要删工作区的⽂件,还要清除版本库的⽂件。
第一步:使用 git rm file
第二步:git commit
[wmh@pDaD code]$ git rm myfile3
rm 'myfile3'
[wmh@pDaD code]$ ll
total 4
-rw-rw-r-- 1 wmh wmh 23 Aug 10 17:04 myfile
-rw-rw-r-- 1 wmh wmh 0 Aug 10 16:18 myfile2
[wmh@pDaD code]$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: myfile3
#
[wmh@pDaD code]$ git commit -m "delete file3"
[master dda18c2] delete file31 file changed, 0 insertions(+), 0 deletions(-)delete mode 100644 myfile3
[wmh@pDaD code]$ git status
# On branch master
nothing to commit, working directory clean
相关文章:
【Git】版本控制器详解之git的概念和基本使用
版本控制器git 初始Gitgit的安装git的基本使用初始化本地仓库配置本地仓库三区协作添加---add修改文件--status|diff版本回退--reset撤销修改删除文件 初始Git 为了能够更⽅便我们管理不同版本的⽂件,便有了版本控制器。所谓的版本控制器,就是⼀个可以记…...
C语言 棱形图案
目录 一、问题分析 上部分: 下部分: 二、代码演示 一、问题分析 如上图所示,我们可以将棱形进行拆解,分为上下两个部分。 上部分: 通过观察,我们得到 单边空格数 上半部分总行数 - 行数 - 1 …...
在idea使用GitHub账号、Copilot异常
登录GitHub显示这样的信息: Invalid authentication data.Connection refused: connect Failed to initiate the GitHub login process. Please try again. 修改hosts(C:\Windows\System32\drivers\etc\hosts),添加以下参数即可…...
面试热题(反转字符串中的单词)
给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意:输入字符串 s中可能会存在前导空格、尾随空格…...
Stable Diffusion WebUI 从零基础到入门
本文主要介绍Stable Diffusion WebUI的实际操作方法,涵盖prompt推导、lora模型、vae模型和controlNet应用等内容,并给出了可操作的文生图、图生图实战示例。适合对Stable Diffusion感兴趣,但又对Stable Diffusion WebUI使用感到困惑的同学&am…...
【uniapp】一文读懂app端安装包升级
一、前言 首先,在app端开发上线的过程中,会面临一个问题,就是关于app端的版本升级的问题。如果不做相关处理来引导用户的话,那么app就会出现版本没有更新出现的各种问题,我们常见的有在线升级和去指定地址下载安装两种…...
【算法题】2518. 好分区的数目
题目: 给你一个正整数数组 nums 和一个整数 k 。 分区 的定义是:将数组划分成两个有序的 组 ,并满足每个元素 恰好 存在于 某一个 组中。如果分区中每个组的元素和都大于等于 k ,则认为分区是一个好分区。 返回 不同 的好分区的…...
编写守护进程
守护进程是一个后台进程,当操作系统启动时就可以运行的进程,当操作系统结束时结束的进程,与终端无关。 结果 不想要了就杀死...
stable-diffusion-webui启动No Python at ‘C:\xxx\xxx\python.exe‘
打开webui.bat 把 if not defined VENV_DIR (set "VENV_DIR%~dp0%venv") 中的%~dp0venv改成自己python的安装路径就行获取直接set值即可 如 set VENV_DIRD:\Users\xxx\AppData\Local\Programs\Python\Python310 另外就是直接运行webui-user.bat也可以 如果运行…...
面试热题(合并两个有序列表)
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 合并链表这类型题也是比较经典的题了,因为链表是由指针相互指向而确定位置,所以我们只需要改变某些节点的指针便可以做到对链表进行排序 今天这个方法…...
QT生成Word PDF文档
需求:将软件处理的结果保存为一个报告文档,文档中包含表格、图片、文字,格式为word的.doc和.pdf。生成word是为了便于用户编辑。 开发环境:qt4.8.4vs2010 在qt的官网上对于pdf的操作介绍如下:http://qt-project.org/…...
阿里云服务器搭建WordPress建站教程基于Windows系统
本教程是使用阿里云服务器镜像系统选择的是Windows操作系统,手动安装WordPress博客网站全过程。本教程介绍如何在Windows操作系统的ECS实例上搭建WordPress网站。 目录 准备工作 搭建WordPress网站 解析WordPress网站域名 准备工作 创建Windows操作系统的ECS实…...
动态链接(8/11)
静态链接的缺点:生成的可执行文件体积较大,当多个程序引用相同的公共代码时,这些公共代码会多次加载到内存,浪费内存资源。 为了解决这个问题,动态链接对静态链接做了一些优化:对一些公用的代码࿰…...
Python 之 Http 获取网页的 html 数据,并去掉 html 格式等相关信息
Python之 Http 获取网页的 html 数据,并去掉 html 格式等相关信息 目录 Python之 Http 获取网页的 html 数据,并去掉 html 格式等相关信息...
干不完根本干不完,我也不想加班,快来围观时间管理大师
时间不够用,怎么办? 成功不靠加班。生产队的驴都不加班,你加什么班?到点就下班,该玩玩,该学习认真学,累了就睡觉。 你可以做任何事,但不必做所有事。 时间管理,不是管…...
常见设计模式
概念 设计模式是怎么解决问题的一种方案 常见的设计模式 单例模式 概念:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 应用:项目封装个websocket用于大屏,redux,vuex都应用了单例模式的思想;…...
Android之版本号、版本别名、API等级对应关系(全)(一百六十二)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...
Redis的简介,安装(Linux、Windows),配置文件的修改---详细介绍
Redis基础 文章目录 Redis基础1、Redis入门1.1、Redis简介1.2、Redis下载与安装1.2.1、在Linux系统安装Redis1.2.2、在Windows系统安装Redis 1.3、Redis服务启动与停止1.3.1、在Linux中启动服务1.3.2、在Windows中启动服务1.3.3、设置密码校验1.3.4、redis的远程连接 Redis是一…...
Vscode-工具使用
Vscode ,这玩意儿是开源的,以前用收费的破解版,过段时间就高版本不匹配,这次搞个不要钱的玩玩,记录使用心得 下载 下载地址:官网 点击下载,但是这里有个问题下载比较慢,解决办法&a…...
Ceph Reef版本 RBD 性能测试:80万写IOPS(10节点、60个NVMe SSD)
2023-05-16 08:30 发表于上海 摘自:https://mp.weixin.qq.com/s/mKkPElmCktoZaRk0m0IbqA 1、背景 Ceph 社区最近冻结了即将发布的 Ceph Reef 版本,今天我们研究一下 Ceph Reef 版本在 10 个节点、60 个 NVMe 磁盘的集群上的 RBD 性能。 在确保硬件没有…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
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"…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
