【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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/65846.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS7.7.1908升级python3版本

介绍 本文将详细介绍在CentOS7.7.1908系统的服务器将自带的python版本升级到3.8.0版本的过程。 在升级前CentOS7.7.1908中已经存在旧python版本。 查看CentOS版本命令&#xff1a; cat /etc/centos-release升级前后的python版本&#xff08;python3升级前为3.6.8&#xff09…

Java:正则表达式书写规则及相关案例:检验QQ号码,校验手机号码,邮箱格式,当前时间

正则表达式 目标:体验一下使用正则表达式来校验数据格式的合法性。需求:校验QQ号码是否正确&#xff0c;要求全部是数字&#xff0c;长度是(6-20&#xff09;之间&#xff0c;不能以0开头 首先用自己编写的程序判断QQ号码是否正确 public static void main(String[] args) {Sy…

【论文阅读】基于深度学习的时序预测——Autoformer

系列文章链接 论文一&#xff1a;2020 Informer&#xff1a;长时序数据预测 论文二&#xff1a;2021 Autoformer&#xff1a;长序列数据预测 论文三&#xff1a;2022 FEDformer&#xff1a;长序列数据预测 论文四&#xff1a;2022 Non-Stationary Transformers&#xff1a;非平…

Elasticsearch 8.X 复杂分词搞不定,怎么办?

1、实战问题 球友提问&#xff1a;我想停用所有纯数字的分词 &#xff0c; 官网上的这个方法好像对ik分词器无效&#xff01; 有没有什么别的方法啊&#xff0c; chart gpt 说分词可以用正则匹配 但是测试好像是不行的 我的es版本是 8.5.3。 2、进一步沟通后&#xff0c;得…

一文读懂!一年耗能堪比2个三峡电站的大数据中心,背后竟隐藏着这些秘密......

全国大数据中心1年的能耗规模相当于2个三峡电站一整年的发电量&#xff0c;这是为什么&#xff1f; 大数据中心每耗费1度电&#xff0c;只有一半用在了“计算”上面&#xff0c;其他的都应用在散热、照明等方面到底是怎么回事&#xff1f; 为什么说在算力上每投入1元&#xff0…

Games101学习笔记 - MVP矩阵

MV矩阵&#xff08;模型视图变换&#xff09; 目的&#xff0c;把摄像机通过变换移动的世界坐标远点&#xff0c;并且朝向与Z轴的负方向相同。这个变换就是模型试图变换。 因为移动了相机&#xff0c;如果想保持正确的渲染的话&#xff0c;那么对应的物体需要要和相机保持相对…

尼科彻斯定理-C语言/Java

描述 验证尼科彻斯定理&#xff0c;即&#xff1a;任何一个整数m的立方都可以写成m个连续奇数之和。 例如&#xff1a; 1^31 2^335 3^37911 4^313151719 输入一个正整数m&#xff08;m≤100&#xff09;&#xff0c;将m的立方写成m个连续奇数之和的形式输出。&…

13-把矩阵看作是对系统的描述

探索矩阵乘法&#xff1a;更深刻的理解与应用视角 &#x1f9e9;&#x1f50d; 引言 &#x1f4d6; 在我们进一步探讨矩阵乘法之前&#xff0c;让我们从不同的角度来理解什么是矩阵&#xff0c;以及如何将矩阵视为一个系统。我们之前已经介绍了矩阵的基本概念和运算&#xff…

Python Opencv实践 - 图像平移

import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR)#图像平移 #cv.warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]]) # M是仿射变换矩阵&#xff0c;对于平移来说M是一…

点云基础知识介绍

目录 一、点云数据采集1. 图像衍生点云2. 激光雷达点云3. RGB- D点云4. SAR点云 二、点云特征三、点云应用四、基准数据集 本文由CSDN点云侠原创&#xff0c;原文链接。爬虫网站自重&#xff0c;把自己当个人。 一、点云数据采集 在计算机视觉和遥感中&#xff0c;点云的获取主…

如何微调优化你的ChatGPT提示来提高对话质量

ChatGPT会话质量很大程度上取决于微调优化提示的艺术。本文旨在阐明微调提示的复杂性&#xff0c;以确保你可以充分发挥ChaGPT这一颠覆性工具的潜力。 与ChatGPT对话的关键部分是“提示”。即&#xff1a;你输入的问题或陈述&#xff0c;它决定了人工智能的响应。类似于引导对…

时序预测 | MATLAB实现基于LSTM长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)

时序预测 | MATLAB实现基于LSTM长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价) 目录 时序预测 | MATLAB实现基于LSTM长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)预测结果基本介绍程序设计参考资料 预测结果 基本介绍 Matlab实现LSTM长短期记忆神经…