Git基础操作

2023-09-20 15:43:10

前言

本文会向您介绍如何安装git,以及快速地上手add,commit,push,版本回退操作

基础配置

关于windous上的安装git官网已经介绍的很清楚了,您可以直接点入链接windows安装
如果你的平台是centos,以centos7.6为例:

⾸先,你可以试着输⼊git,看看系统有没有安装Git:
-bash: git: command not found
出现像上⾯的结果,Linux会友好地告诉你Git没有安装。
安装git:
 sudo yum -y install git
 //查看当前安装版本
 git --version

如果你的的平台是ubuntu,以ubuntu20.04为例
⾸先,你可以试着输⼊git,看看系统有没有安装Git:

:Command 'git' not found, but can be installed with:
sudo apt install git
出现像上⾯的结果,Linux会友好地告诉你Git没有安装,还会告诉你如何安装Git。
安装git:
sudo apt-get install git -y
//查看当前版本
git --version

安装完Git后,要做的第一件事就是设置你的用户名和邮件地址。
每一个Git提交都会使用这些信息,都会写入到你的每一次提交中

git config --global user.name 'your_name'
git config --global user.email 'your_email@...'
其中 --global 是⼀个可选项。如果使⽤了该选项,表⽰这台机器上所有的 Git 仓库都会使⽤这个配置。如果你希望在不同仓库中使⽤不同的 name 或 e-mail ,可以不要 --global 选项
config的三个作用域 git config --local 只对某个仓库有效 git config --global 对当前用户所有仓库有效 git config --system 对系统所有登录的用户有效 显示config的配置,加上 --list git config --list --local git config --list --global git config --list --system

创建Git本地仓库
仓库是进行版本控制的一个文件目录。我们想要对文件进行版本控制,就必须先创建出一个仓库出来

创建⼀个 Git 本地仓库对应的命令为 git init ,注意命令要在⽂件⽬录下执⾏
你可以先madir 一个名为gitcode的目录,然后cd进入目录使用git init命令

在这里插入图片描述
当前⽬录下多了⼀个 .git 的隐藏⽂件, .git ⽬录是 Git 来跟踪管理仓库的,不要⼿动修改这个⽬录⾥⾯的⽂件,不然改乱了,就把 Git 仓库给破坏了
如果您是在windows下安装的,您可以打开创建的仓库目录
然后右键点击Git Bash Here
在这里插入图片描述

引入

当配置完基础信息后,接下来引入几个概念:

关于GIt
1、Git与其他版本控制系统的主要差别在于Git对待数据的方式,其他大部分系统以文件变更列表的方式存储信息, 并记录每个文件随时间逐步累积的差异。也就是说,每次版本迭代时,系统只记录文件与上一个版本的差异,而不是整个文件内容,从而减少了存储空间的占用。这种基于差异的实现方式可以提高版本控制系统的效率和可扩展性。
2、Git近乎所有的操作都是本地执行,只需要访问本地文件和资源,一般不需要来自网络其它计算机的信息,要浏览项目的历史,Git不需要连到服务器去获取历史,然后再显示出来,它只需要从本地数据库中读取。这也意味着在离线或者没有VPN的情况下,也能进行任何操作。
3、Git所有的数据在存储前都计算校验和,然后以校验和来引用。这意味着不可能在Git不知情的情况下修改任何文件内容或目录内容
• ⼯作区:是在电脑上你要写代码或⽂件的⽬录。
• 暂存区:英⽂叫 stage 或 index。⼀般存放在 .git ⽬录下的 index ⽂件(.git/index)中,我们把暂存区有时也叫作索引(index)。
• 版本库:⼜名仓库,英⽂名 repository 。⼯作区有⼀个隐藏⽬录 .git ,它不算⼯作区,⽽是 Git 的版本库。这个版本库⾥⾯的所有⽂件都可以被 Git 管理起来,每个⽂件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

git add与git commit

git add
git add . 将当前目录下的所有修改的文件(刚创建的文件也算修改)添加到暂存区
git add <file> 将指定文件添加到暂存区
git add -i 进入交互模式,可以选择要添加的文件

添加文件
您可以使用git add 命令去跟踪一个文件
在这里插入图片描述
git add 是将⽂件添加到暂存区, git commit 是将暂存区的内容添加到本地仓库中。
我们可以观察下图git add操作即是将未跟踪的文件(untracked)添加到暂存区(Staged)

在这里插入图片描述
最后可使用

git commit -m"日志message"
git commit -a 自动将所有已修改或已删除的文件添加到暂存区并提交修改

注意日志这里不要随便写,交代清楚提交了什么修改了什么
在这里插入图片描述
当我们使用vim改动test2文件中的内容
使用git status查看当前git的状态
在这里插入图片描述
git会提醒我们需要git add更新要提交的内容
在这里插入图片描述
在这里插入图片描述

工作目录下的每一个文件都不外乎两种个状态:已跟踪和未跟踪。已跟踪的文件是指哪些被纳入了版本控制的文件
在上一次的快照中有它们的记录,在工作一段时间后,它们的状态可能时为修改,已修改或已放入暂存区。
初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态

版本回退

第一种情况只变更工作区的内容
在这里插入图片描述
我们可以使用来恢复仅在工作区变更的内容(注意:这里是未有git add更改后的文件)

git checkout -- Readme

第二种情况:已经add了,但没有commit
首先介绍一个命令

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

我们先用

git log --pretty=oneline

git log --pretty=oneline" 是一个Git命令,用于显示提交历史的简洁视图。使用该命令可以将每个提交的信息显示在一行上
在这里插入图片描述
需要说明的是,我们看到的⼀⼤串类似 5608e…的是每次提交的 commit id (版本
号),Git 的 commit id 不是1,2,3……递增的数字,⽽是⼀个 SHA1 计算出来的⼀个⾮常⼤的数
字,⽤⼗六进制表⽰
利用git reset命令将暂存的内容退回为指定提交版本内容
在这里插入图片描述
我们再使用git checkout命令撤销在工作区中修改的内容
在这里插入图片描述
第三种情况:已经add并且commit了
对Readme进行修改
在这里插入图片描述
并且add和commit
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
git reset --hard HEAD^此命令将工作区、暂存区、版本库中的内容回退到上个commit的版本

小结

本文的分享就到这里啦,如果本文存在疏漏或错误的地方还请您能够指出!

更多推荐

[Qt/C/C++]JSON和程序发布

文章摘于爱编程的大丙文章目录1.JSON1.1Json数组1.2Json对象1.3注意事项2.Qt中JSON操作2.1QJsonValue2.2QJsonObject2.3QJsonArray2.4QJsonDocument2.5举例2.5.1写文件2.5.2读文件3.cjson库的使用3.1cJSON结构体3.2cJ

华为OD机考算法题:分积木

目录题目部分解读与分析代码实现题目部分题目分积木难度难题目说明Solo和koko是两兄弟,妈妈给了他们一大堆积木,每块积木上都有自己的重量。现在他们想要将这些积木分成两堆。哥哥Solo负责分配,弟弟koko要求两个人获得的积木总重量“相等”(根据Koko的逻辑),个数可以不同,不然就会哭,但koko只会先将两个数转成二

Linux 系统目录结构 & 终端

系统目录结构Linux或Unix操作系统中,所有文件和目录呈一个以根节点为始的倒置的树状结构。文件系统的最顶层是根目录,用/来表示根目录。在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含子目录文件。如此,就构成了一个庞大的文件系统。在命令窗口下输入命令:ls/,显示根目录下的文件:树状目录结构:目录解

从零开始搭建成绩查询系统

在当前的数字化时代,教育行业借助技术手段不断推动教学效果的提升。作为教师,搭建一个专属的成绩查询系统可以更好地管理学生成绩,并即时向家长反馈。本文将详细介绍如何从零开始搭建一个成绩查询系统,以提升教学管理的便捷性和效率。当然,对于非技术型的教师来说,使用现成工具是个更快速实用的选择。易查分等工具被许多教师用来制作查分网

(VS报错)已在 xxxxx.exe 中执行断点指令(__debugbreak()语句或类似调用)-解决方法&&C++创建对象四种方式

上述报错困扰了我好几天,在网上搜了一天,到最后还是没有解决问题试过通过项目属性->C/C+±>代码生成->启用增强指令集->选择AVX,这种方法也没用但问题出现在创建对象时内存分配问题上方法一:如果是这样创建对象,并且写了析构函数会报错,把析构函数删去之后程序就能正常运行了。方法二:创建对象的方式改为这样,程序也可以正

第九章(2):长短期记忆网络(Long short-term memory, LSTM)与pytorch示例(简单字符级语言模型训练器)

第九章(2):长短期记忆网络(Longshort-termmemory,LSTM)与pytorch示例(简单字符级语言模型训练器)作者:安静到无声个人主页作者简介:人工智能和硬件设计博士生、CSDN与阿里云开发者博客专家,多项比赛获奖者,发表SCI论文多篇。Thanks♪(・ω・)ノ如果觉得文章不错或能帮助到你学习,可

Python计算机二级知识点整理

1.当一个进程在运行过程中释放了系统资源后要调用唤醒进程原语唤醒进程原语是把进程从等待队列里移出到就绪队列并设置进程为就绪状态,当一个进程在运行过程中释放了系统资源后进入就绪状态,调用唤醒进程原语。2.3.4.在希尔排序法中,每经过一次数据交换后能消除多个逆序在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数

机械寿命预测(基于NASA C-MAPSS数据的剩余使用寿命RUL预测,Python代码,CNN_LSTM模型,有详细中文注释)

1.效果视频:机械寿命预测(NASA涡轮风扇发动机剩余使用寿命RUL预测,Python代码,CNN_LSTM模型,有详细中文注释)_哔哩哔哩_bilibili环境库版本:2.数据来源:https://www.nasa.gov/intelligent-systems-division数据文件夹数据介绍:当前基于机器学习的

计算机是如何工作的下篇

操作系统(OperatingSystem)操作系统是一组做计算机资源管理的软件的统称。目前常见的操作系统有:Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等.操作系统由两个基本功能:对下,要管理硬件设备.对上,要给软件提供稳定的运行环境.因此,操作系统是软件硬件用户之

【C#】Redis在net core下使用教程

系列文章文章目录系列文章前言一、Redis简介1.1Redis优势1.2Redis与其他key-value存储有什么不同?二、Redis安装步骤2.1下载链接2.2安装测试三、Redis修改帐户密码四、Redis写成Windows服务五、.netcore-使用CSRedisCore操作redis前言官方教程:https

【Azure】构建安全架构的 Azure 云:深入了解零信任体系结构

文章目录前言一、零信任安全模型的概念以及背景介绍二、传统安全模型(边界模型)三、零信任模型(现阶段主流云厂商策略)四、Azure中的零信任体系结构(本文重点)4.1基础知识点(必须了解)(一)Azure中零信任的指导原则(二)Azure中调整为零信任4.2Azure中的零信任体系结构(六层防御)4.3AzureClou

热文推荐