git安装及初步使用

news2024/11/16 12:01:55

git的安装 :

在CentOS 7.6环境下可以使用一条语句就能安装git

yum -y install git

如果上面命令包以下错误,说明权限不够

[leijie@fl ~]$ yum -y install git
Loaded plugins: fastestmirror
You need to be root to perform this command.

可以转换成root用户再次执行

或者对该用户添加sudo权限后在使用,

(16条消息) linux中创建用户并赋予用户sudo权限_赋予sudo权限_小逍遥1127的博客-CSDN博客

sudo yum -y install git

在这里插入图片描述

在安装之前也可以用

git --version

命令查看是否已经安装好git
在这里插入图片描述

卸载git命令

sudo yum remove git  -y

git的基本操作

创建git本地仓库

创建一个git目录

mkdir [目录名]

在这里插入图片描述

进入这个git目录 ,然后使用git init 对这个目录进行初始化

git init

在这里插入图片描述
当前⽬录下多了⼀个 .git 的隐藏⽂件, .git ⽬录是Git来跟踪管理仓库的,不要⼿动修改这个⽬录⾥⾯的⽂件,不然改乱了,就把Git仓库给破坏了

配置git

当安装Git后⾸先要做的事情是设置你的用户名称和e-mail地址 ,其中这个 --global选项是指我们对这个的配置会在当前机器下的所以的git仓库都生效

git config [--global] user.name  "Your Name"
git config [--global] user.email "email@example.com"

配置完后用

git config -l 

命令查看配置是否成功
在这里插入图片描述

如果想重置一个配置, 其中对于用--global配置的内容也要用--global进行重置

git config [--global] --unset [重置的属性名]  

在这里插入图片描述

⼯作区、暂存区、版本库

  • ⼯作区:是在电脑上你要写代码或⽂件的⽬录。
  • 暂存区:英⽂叫stageindex。⼀般存放在.git ⽬录下的index文件(.git/index)中,我们把暂存区有时也叫作索引(index)。
  • 版本库:⼜名仓库,英⽂名repository 。⼯作区有⼀个隐藏⽬录.git ,它不算⼯作区,⽽是Git的版本库。这个版本库⾥⾯的所有⽂件都可以被Git管理起来,每个⽂件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

  • 图中左侧为⼯作区,右侧为版本库。Git的版本库⾥存了很多东西,其中最重要的就是暂存区。
  • 在创建Git版本库时,Git会为我们⾃动创建⼀个唯⼀的master分⽀,以及指向master的⼀个指针叫HEAD。
  • 当对⼯作区修改(或新增)的⽂件执⾏ git add 命令时,暂存区⽬录树的⽂件索引会被更新。
  • 当执⾏提交操作 git commit 时,master分⽀会做相应的更新,可以简单理解为暂存区的⽬录树才会被真正写到版本库中

提交命令

将文件从工作区添加到暂存区,在add后就会多一个index,就是里面的暂存区

git add . 	   #将当前目录的所以文件都加入暂存区
git add [name] #指定文件加入暂存区
git add [name1] [name2] .. #一次性添加多个文件 

在这里插入图片描述

将暂存区内容添加到本地仓库

git commit -m "[描述]" 	#这个描述说这个操作是干什么

在这里插入图片描述

查看提交记录

git log #可以查看git的提交记录
git log --pretty=oneline
git log [file] #指定查看某一个文件的记录


在这里插入图片描述

查看git文件 :

.git中的HEAD是指向一个分支的,默认是master,修改的工作区内容会写入对象库的一个新的git对象中
在这里插入图片描述
在这里插入图片描述

git 修改文件

在git中只要是新增,修改,删除文件,都叫做 修改,所以知道了Git中追踪管理的其实是修改,而不是文件

git status #查看当前仓库状态  可以通过这个查看上次提交后到现在是否有文件被修改了

在这里插入图片描述

不过这个git status 只能查到那个文件被修改了,但是不知道修改的内容,要想知道,就需要用

git diff [file] #查看工作区与暂存区的差异

在这里插入图片描述
在这里插入图片描述

除了git diff

git diff HEAD -- [file]#用来查看工作区与版本库的差异

在这里插入图片描述

版本回退

Git能够管理⽂件的历史版本,这也是版本控制器重要的能⼒。如果有⼀天你发现之前前的⼯作做的出现了很⼤的问题,需要在某个特定的历史版本重新开始,这个时候,就需要版本回退的功能了

版本回退的命令是git reset ,该命令⽤于回退版本,可以指定退回某⼀次提交的版本。要解释⼀下“回退”本质是要将版本库中的内容进行回退,⼯作区或暂存区是否回退由命令参数决定

git reset [--soft | --mixed | --hard] [HEAD]
 --mixed 为默认选项,使⽤时可以不⽤带该参数。该参数将暂存区的内容退回为指定提交版本内容,⼯作区⽂件保持不变。
 --soft 参数对于⼯作区和暂存区的内容都不变,只是将版本库回退到某个指定版本。
 --hard 参数将暂存区与⼯作区都退回到指定版本。切记⼯作区有未提交的代码时不要⽤这个命令,因为⼯作区会回滚,你没有提交的代码就再也找不回了,所以使⽤该参数前⼀定要慎重
 
HEAD 说明:
◦ 可直接写成 commit id,表⽰指定退回的版本
◦ HEAD    表⽰当前版本
◦ HEAD^   上⼀个版本
◦ HEAD^^  上上⼀个版本
◦ 以此类推...
• 可以使⽤〜数字表⽰:
◦ HEAD~0 表⽰当前版本
◦ HEAD~1 上⼀个版本
◦ HEAD^2 上上⼀个版本
◦ 以此类推...

在这里插入图片描述

可以看到,对应现在一共有4个版本,那么我们对其使用git reset --hard将版本库,暂存区,工作区的都回退到第一个版本

git reset --hard HEAD^3 #写法一
git reset --hard [commit id]

在这里插入图片描述

通过commit id 回退到第一个版本后,就发现在提交第一次之后提交的test2,test3就没了,想恢复回退前的版本也可以使用commit id

在这里插入图片描述

不过我们回退后使用git log其实是看不到后面版本的commit id的,

在这里插入图片描述

想要在回退后查看到对应版本的commit id就需要使用git reflog

在这里插入图片描述

对于上面的第一列的 b4c2a30 , f61af46 ,7df5220其实是commit id的一部分,Git版本回退的时候,也可以使⽤部分 commit id 来代表⽬标版本

撤销修改

如果我们在工作区中的编写感觉不太行,不想用这个版本了,想重新从上个版本写,就需要恢复到上一个版本,这个就叫撤销修改,撤销的目的是为了不去影响远程仓库的代码(没有进行git push)

不过撤销修改有多个场景,

场景一:

我们修改后的内容只存在在工作区中,没有将修改后的存入暂存区和版本库,简单来说就是修改后没有进行Add和Commit操作

这个场景下,我们只需要撤销工作区的操作就行了

git checkout -- [file] #将工作区文件回到最近一次提交的状态,切记 -- 不能省略

在这里插入图片描述

场景二:

我们修改后的内容不止在工作区有,也存在到了暂存区中,但是版本库中没有,就是进行了Add操作,但是没有进行Commit操作

这个场景下,我们需要撤销工作区与暂存区的操作
在这里插入图片描述

这个想要回退就可以

方法一:先使用前面的git reset --mixed [HEAD]命令去回退暂存区的内容,再使用git checkout -- [file]去回退

工作区的内容

在这里插入图片描述

方法二:直接使用git reset --hard HEAD 将工作区和暂存区的全回退到当前版本
在这里插入图片描述

场景三:

我们修改后的内容在工作区,暂存区,版本库中都有,就是进行了add和commit操作了

这个场景下我们需要撤销工作区,暂存区和版本库的操作

只需要使用git reset --hard HEAD^ 命令就行了

在这里插入图片描述

删除版本库的文件

我们在git目录中的rm操作其实是只对工作区进行删除了,但是版本库中没有真的删除,就需要操作add和commit 才能对版本库的文件也删除

步骤:使用git rm [file]对工作区与暂存区的删除,在commit将这个删除操作提交到版本库进行删除
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

神经网络学习小记录74——Pytorch 设置随机种子Seed来保证训练结果唯一

神经网络学习小记录74——Pytorch 设置随机种子Seed来保证训练结果唯一 学习前言为什么每次训练结果不同什么是随机种子训练中设置随机种子 学习前言 好多同学每次训练结果不同,最大的指标可能会差到3-4%这样,这是因为随机种子没有设定导致的&#xff0…

电源频率检测器/采用555时基电路的过流检测器电路设计

电源频率检测器 对于某些电子仪器和电气设备,对见六电源的频率有着一定的要求,电源频率高于或低于 50Hz,都会影响设备的正常工作,甚至造成仪器和设备的损坏。因此,对于此类设备需要装设电源频率检测装置,当…

Linux开发工具之【vim】

Linux开发工具之【vim】 文章目录: Linux开发工具之【vim】1. Linux软件包管理器yum1.1 查看软件1.2. 下载软件1.3 卸载软件 2. vim编辑器的使用2.1 vim常用模式2.2 vim基本操作2.3 vim命令模式命令集2.3.1 移动光标2.3.2 删除文字2.3.3 复制文本内容2.3.4 替换文本…

Openpose原理总结

Openpose是一种开源的实时多人姿态估计库,由卡耐基梅隆大学开发。它通过分析图像或视频中的人体关键点来估计人体的姿态,识别身体的各个部分,并推断出人体的姿势信息。 Openpose能够同时检测和跟踪多个人的姿态,可以用于人机交互、…

二.《泽诺尼亚》明文CALL

了解发包函数 1.一款网络游戏,必定是会发包的,对于PC端而言,想要进行网络通讯,就拿最简单的CS架构而言势必会调用win32 API函数或底层函数 2.这里列举出常用的API如:send sendto wsasend wspsend 3.有一些正向开发经验的同学,肯定是见过这几个函数的 4.接下来我们来看看这款…

JavaEE——介绍并简单使用线程池

文章目录 一、 什么是线程池二、Java中线程池的运用1. 创建线程池中的问题2. 标准库中线程池的使用 三、自主实现一个简单的线程池 一、 什么是线程池 所谓线程池,其实和字符串常量池,数据库连接池十分相似,就是设定一块区域,提前…

打印机常见故障解决参考方法

1、首先检查打印机电源线连接是否可靠或电源指示灯是否点亮,然后再次打印文件,仍不能打印,请看下一步。 2、检查打印机与计算机之间的信号传输线是否可靠连接,检查并重新连接,如果打印机仍不能打印,请看下一…

Java线程Thread类常用方法

文章目录 1. start():启动线程,使其执行run()方法中的代码。2. run():线程的执行逻辑,需要在该方法中定义线程要执行的代码。3. sleep(long millis):使当前线程暂停指定的毫秒数,进入阻塞状态。4. join()&a…

【C++】红黑树封装map和set

文章目录 一、map和set源码剖析二、红黑树的迭代器1.begin()与end()2.operator()与operator--() 三、set的模拟实现四、map的模拟实现五、完整代码实现1.RBTree.h2.set.h3.map.h5.Test.cpp 一、map和set源码剖析 我们知道,map和set的底层是红黑树,但是我…

如何用Python快速搭建一个文件传输服务

当我的朋友需要把他电脑上面的文件从他的电脑传递到我电脑上的时候,我只需要启动服务 启动服务! 他打开web界面 就能把文件传递到我电脑上(还能够实时显示进度) 文件就已经在我电脑上的uploads文件夹里面了 项目结构如下 templat…

python浮点运算不准确

1.问题 1.12.2的最后结果并不等于3.3 2. 解决方法 错误示范 引入了Decimal计算,但是计算类型是float型,依然计算不准确 正确解决方法 把类型转化为字符串引入计算

动手实战 | 使用 Transformers 包进行概率时间序列预测

最近使用深度学习进行时间序列预测而不是经典方法涌现出诸多创新。本文将为大家演示一个基于 HuggingFace Transformers 包构建的概率时间序列预测的案例。 概率预测 通常,经典方法针对数据集中的每个时间序列单独拟合。然而,当处理大量时间序列时&…

spring中的扩展点解析以及实践使用

文章目录 1、ApplicationContextInitializer2、BeanDefinitionRegistryPostProcessor3、BeanFactoryPostProcessor4、InstantiationAwareBeanPostProcessor5、SmartInstantiationAwareBeanPostProcessor6、BeanFactoryAware7、ApplicationContextAwareProcessor8、BeanNameAwar…

查找文件所在的具体位置

Linux Command 命令: find – walk a file hierarchy (遍历文件层次结构) ;DESCRIPTION 描述: 在指定目录下查找文件和目录, 可以使用不同的选项来过滤和限制查找的结果 ; Grammar Format $ find <在哪个路径下查找> <可选参数…> 常用选项 -name <pattern>…

【javaEE面试题(四)线程不安全的原因】【1. 修改共享数据 2. 操作不是原子性 3. 内存可见性 4. 代码顺序性】

4. 多线程带来的的风险-线程安全 (重点) 4.1 观察线程不安全 static class Counter {public int count 0;void increase() {count;} } public static void main(String[] args) throws InterruptedException {final Counter counter new Counter();Thread t1 new Thread(()…

VMware16.0安装教程和创建

许可证&#xff1a; ZF3R0-FHED2-M80TY-8QYGC-NPKYFYF390-0HF8P-M81RQ-2DXQE-M2UT6ZF71R-DMX85-08DQY-8YMNC-PPHV8设置网络 添加镜像 下载centos7镜像网址https://mirrors.aliyun.com/centos/7/isos/x86_64/?spma2c6h.25603864.0.0.d7724511YPrZpg win10镜像地址https://ww…

Linux+Docker+Gitlab+Jenkins+虚拟内存

最近想研究一下怎么自动化发布项目,于是找到了gitlab+jenkins这个组合,正好借机也研究一下最近很火的docker技术。本篇共分为五部分,分别为安装要求,内存虚拟化,安装docker,安装gitlab,安装jenkins。 一、 安装要求 1 Docker安装要求: 1.1 操作系统 Docker只支持64…

unittest单元测试

java的单元测试框架Junit和TestNG&#xff0c;python里面也有单元测试框架-unittest,相当于是一个python版的junit。python里面的单元测试框架除了unittest,还有一个pytest框架&#xff0c;但是用的比较少 unittest注意点&#xff1a; 导入unittest模块 类名的第一个字母大写&…

代码随想录算法学习心得 40 | 139. 单词拆分、背包问题总结...

一、单词拆分 链接&#xff1a;力扣 描述&#xff1a;给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。注意&#xff1a;不要求字典中出现的单词全部都使用&#xff0c;并且字典中的单词可以重复使用。 思路如下&…

【Linux | Shell】Linux 安全系统 —— 用户、组、文件权限 - 阅读笔记

目录 一、Linux 的安全性1.1 /etc/passwd 文件1.2 /etc/shadow 文件1.3 添加新用户 —— useradd1.4 删除用户 —— userdel1.5 修改用户 —— usermod、passwd、chpasswd 二、使用 Linux 组2.1 /etc/group 文件2.2 创建新组 —— groupadd2.3 修改组 —— groupmod 三、理解文…