【Git 教程】—git指令详细解析,上机操作,简单易懂

news2024/10/7 16:26:41

目录

一. 集中式和分布式的区别

1. 集中式版本控制工具

2. 分布式版本控制工具

3. 基本概念

4. 配置信息 

二. 创建本地仓库(git init)

三.基础指令

1. 获取git版本号

2.查看文件的状态

3. 查看提交记录

4. 版本回退 

5. git reflog

6. .gitignore文件

四.分支

1. 分支的好处

2. 查看分支(git branch)

3. 创建分支

4. 切换分支

 5. 创建并切换分支

6. 分支合并

7. 解决合并冲突

五. git远程连接

1. 给远程仓库添加密钥

2. 新增远程仓库

3. 克隆远程仓库


一. 集中式和分布式的区别

1. 集中式版本控制工具

集中式版本控制工具,版本库是集中存放在中央服务器的,team里每个人work时从中央服务器下载代码,是必须联网才能工作,局域网或互联网。个人修改后然后提交到中央版本库。
举例:SVN和CVS


2. 分布式版本控制工具

分布式版本控制系统没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样工作的时候,无需要联网了,因为版本库就在你自己的电脑上。多人协作只需要各自的修改推送给对方,就能互相看到对方的修改了。

  • 分布式版本库存在远程仓库和本地仓库的区别。
  • 远程仓库(github,gitee)存放共享服务器上的代码或者 数据
  • 本地仓库就是每个人的主机上的数据或代码。
  • 远程仓库和本地仓库可以通过网络之间进行交互数据,在交互数据之前,远程仓库与本地仓库需要先关联起来
  • git就是一个分布式版本系统

3. 基本概念

工作区:工作区就是你电脑能看见的目录。

暂存区:英文叫stage或者index,一般存放在.git目录下

版本库:工作区有一个隐藏目录.git,这个工作区,而是GIT版本库。

4. 配置信息 

在执行指令之前,我们先需要配置用户的邮箱和密码,如下两个指令:


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

查看配置信息

git config --list  #查看配置信息

二. 创建本地仓库(git init)

  • 要使用Git对我们的代码进行版本控制,首先需要创建本地仓库

  • 在电脑的任意位置创建一个空目录(例如test)作为我们的本地Git仓库2)进入这个目录中,点击右键打开Git bash窗口

  • 执行命令git init

  • 如果创建成功后可在文件夹下看到隐藏的.git目录,。所有 Git 需要的数据和资源都存放在这个目录中

实操:

  •  在该空目录下执行git init 命令,创建成功则会看到  .git目录,则该git目录就是我们的工作目录

三.基础指令

1. 获取git版本号

git --version

  • 未跟踪状态:新创建一个文件,如果这个文件还没有提交到暂存区,则这个文件处于未跟踪状态
  • 未暂存状态:已经提交过的暂存区的文件,如果修改这个文件之后,但还没有提交到暂存区,,则这个文件处于未暂存状态。
git add 文件名  #将文件提交到暂存区
git commit -m "注释" #将暂存区中的所有修改提交到本地仓库

2.查看文件的状态

git status //查看文件状态

 如果文件从暂存区提交到仓库后,则我们不需要再关心文件状态,如果修改了文件,则文件会显示到未暂存区域,例如2222.txt文件

举个例子:

我们将文件1111.txt文件提交到仓库中,git status 则不会看到1111.txt文件的状态

git commit 1111.txt文件后,查看所有文件的状态:

3. 查看提交记录

git log #查看提交记录
选项:
--all 显示所有分支
--pretty=oneline 将提交信息显示为一行
--graph 以图的形式显示
--abbrev

 

当我们的提交记录多了以后,为了方便我们查看各个分支的日志,我们一般都需要将git log中所有的选项给添加上去。

给常用指令设置别名

如果我们的git指令太长了,则我们可以给该指令设置别名

  1. 进入用户目录,创建.bashrc文件
  2. 在.bashrc文件中设置别名
  3. 在gitBash执行 source ~/.bashrc
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'

4. 版本回退 

 git reset --hard commid #切换到某一个版本

什么是版本?

仓库中每一次提交记录则 记为一个版本

举个例子:

1111文件第一次提交到仓库存储的数据如下:

 当我们修改1111文件中的数据并提交到仓库,此时记录为第二个版本:

 什么版本回退?

所谓的版本回退就是 恢复 往前 提交到仓库中的的数据

举个例子:

此时处于第二个版本的数据,如果你想要 1111文件中第一个版本的数据,那么你可以使用 git reset 来回退到第一个版本的数据,具体操作:

查看git-log(git-log之前设置的指令别名)

 找到第一个版本的commid为63b2d2d,指令git reset --hard 63b2d2d

 查看1111文件中的内容是回退到第一个版本的数据。

我们再查看git-log,发现第二版本的数据已经删除掉了。

 如果我们此时想从第一个版本再退回到第二个版本,此时我们应当怎么做?

我们可以利用git reflog指令来查看 往前的记录(包括被删除的记录)

5. git reflog

查看git的往前的删除操作之前的记录,,每个步骤之前都有一个commitId。

当我们找到提交第二版本记录的CommitId,这样就可以直接回退到第二版本。如下: 

6. .gitignore文件

在当前的工作目录下创建.gitignore文件

在.gitignore文件中添加不需要被管理的文件名即可,则git就不会去管理.gitignore里面的文件。

例子:

git status 查看文件中的状态, 发现3333.txt文件属于未跟踪的状态

再将3333.txt文件写入到.gitignore文件里面。

 发现3333.txt文件则没有显示状态。

 再将将 3333.txt文件提交到暂存区,发现提交不了。

四.分支

几乎所有的版本控制系统都以某种形式支持分支。使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug修改开发新的功能以免影响开发主线

1. 分支的好处

  • 同同时并行推进多个功能的开发,提高工作效率
  • 各个分支在开发过程中不影响一个分支开发失败不会影响到其他分支,失败的分支直接删除重新开发就可以

2. 查看分支(git branch)

git branch 

如下:

该工作区下只有一个master分支。 

3. 创建分支

 git branch 分支名       

创建一个sjp名的分支 

 

在git-log中HEAD指向的分支,即为当前执行的分支。

4. 切换分支

git check 分支名 

切换到sjp分支上 

 

 5. 创建并切换分支

git checkout -b 分支名

每个分支他们的数据是相互独立的,只要分支将数据提交到本地仓库中,分支中无论创建的文件,删除文件,修改文件数据等操作都不会影响到其他分支。

例如:

当我们在sjp分支上创建一个4444.txt,5555.txt文件,并将5555.txt文件提交到本地仓库中。

查看sjp分支目录下的文件:

 切换master,查看master下文件,发现并没有5555.txt文件

 注意:

如果sjp分支上的 5555.txt文件 没有提交到仓库中,即使提交到暂存区中,切换到master分支,master分支也是看得5555.txt文件的。

6. 分支合并

git merge 分支名

分支合并是将 正在执行的分支 与其他的分支进行数据的合并。

如果合并的分支的数据 是当 前分支上没有,那么直接将该数据拷贝过来。

例如:

master 分支上有一个test.txt文件,这个文件中的数据是hello world!

而sjp分支上没有一个文件,当我们sjp分支合并master分支后,则test.txt文件则会创建到sjp分支,且文件内容与master分支上的test文件内容一样。

 查看git-log

7. 解决合并冲突

如果合并的分支与当前分支的数据发生冲突,那么git会保留两个分支的数据,让使用者自己选择。

例如:

master分支合并sjp分支上的数据,master和sjp分支仅有一个test文件。

sjp分支上 test文件内容:

master分支上的test文件内容: 

当前分支(master分支)与sjp分支进行合并

我们再来查看test文件内容,发现test文件上存在master分支上和sjp分支上的数据。

 这时候我们可以选择其中一个分支上的数据,并提交到仓库中即可

五. git远程连接

1. 给远程仓库添加密钥

并不是每个人都可以将数据推送到远程仓库中,在本地仓库的数据提交到远程仓库的过程中,远程仓库确认你的身份,所以我们需要在远程仓库上(Github,或者Gitee)添加本地密钥。

1. 右键,点击 Git Bash 进入命令窗口

 2.进入~/.ssh目录,查看是否有id_rsa.pub文件。

3. 如果没有id_rsa.pub文件,则使用如下创建它:

ssh-keygen -t rsa -C "your_email@example.com"
  • 将  " your_email@example.com " 替换成你自己的GitHub注册邮箱,接下来的提示都按回车即可。
  • 成功生成密钥后,进入id_rsa.pub文件,将文件中的所有内容进行复制

进入github,找到setting 

 

2. 新增远程仓库

我们需要先初始化仓库,然后再添加远程仓库。

git remote add {仓库名}{url}

url即下面复制的这个字符串

创建一个远程仓库,仓库名为origin。 

A@DESKTOP-LO8AAG6 MINGW64 ~/Desktop/c++学习笔记 (master)
$ git remote origin git@github.com:sjp1237/study-note.git

git remote 查看所有的远程仓库

 

3. 克隆远程仓库

git clone

不需要初始化仓库,直接奖整个项目的数据给拷贝下来,包括.git目录,所以不需要使用git init进行初始化。

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

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

相关文章

数据机房温湿度监控系统解决应用案例

机房温湿度监控系统之POE以太网温湿度传感器解决方案 物联网工业级高精度传感器 以太网智能RJ45温湿度传感器(POE12VDC供电型) 智 能 传 感 器 介 绍 目 录 一、关键词…………………………………………………………………………3 二、 产品概述…

51单片机 | DS18B20 温度传感器实验

系统设计 设计要求 (1) 主体电路包括晶振、复位、电源指示电路,预留程序下载接口; (2) 要求能够实现温度数值的自动显示,值根据实际温度变化自动变化。 (3) 并按照题目要求完成程序源码编写、调试及关键代码注释。 设计任务 使用给定硬件…

C++两个区间的比较?——STL之equal()算法和mismatch()算法

equal()算法 检验相等性 bool equal(InputIterator1 beg,InputIterator1 end,InputIterator2 cmpBeg)bool equal(InputIterator1 beg,InputIterator1 end,InputIterator2 cmpBeg,BinaryPredicate op) 第一形式判断区间…

mongodb命令使用

查询副本集当前状况(需要将命令行切换到需要查询的副本集中) rs.status() 查询数据库当前情况 sh.status() 查询数据分片情况 db.集合名称.getShardDistribution() 查看集合当前情况 db.集合名称.stats() 查看集合是否开启分片 db.集合名称.stats().sharded 查看mong…

Python网络编程(一)——了解IP和端口的基础知识以及socket的简单实现

系列文章目录 Python网络编程(一)——了解IP和端口的基础知识以及socket的简单实现 了解IP和端口的基础知识以及socket的简单实现 系列文章目录前言获取本机设备名和IP获取远程设备的IP地址将IPv4地址转换成以十六进制形式表示二进制数据获取端口的服务…

数据结构 -- 共用体Union

在数据结构 -- 结构体Struct一文中详细介绍了结构体的定义以及内存对齐。在C语言中,还有另外一种和结构体非常类似的语法,叫做共用体(Union),也称为联合体。它的定义格式为: union 共用体名{成员列表 };1. …

【CVPR红外小目标检测】红外小目标检测中的非对称上下文调制(ACM)

论文题目: Asymmetric Contextual Modulation for Infrared Small Target Detection 红外小目标检测中的非对称上下文调制 红外小目标数据集 目标个数分布:约90%图片中只有一个目标,约10%图片有多个目标(在稀疏/显著的方法中&am…

网文助手。

网文助手 简述 网文助手,免费高质量小说资料网站,支持笔记本和手机端,主要有以下功能。 随机生成小说男女姓名,和尊称随机生成地域和势力名称随机生成功法秘籍、招式战技、法宝兵器、丹药和阵法随机生成妖兽、凶地、天材地宝随…

Prometheus监控报警+Grafana loki日志聚合系统

Prometheus监控报警Grafana loki日志聚合系统 参考文档 https://blog.csdn.net/m0_57480266/article/details/121190725?spm1001.2101.3001.6650.1&utm_mediumdistribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-121190725-blog-111992382.235%5Ev3…

二十一、线索转换3:线索的备注转化为客户联系人的备注

功能需求 3.线索的备注信息--》客户备注 4.线索的备注---》联系人备注 5.线索市场活动关系---》联系人市场活动关系 流程图 代码实现&#xff1a;线索的备注转化为客户联系人的备注 1.clueRemarkMapper /*** 根据线索id 查询备注2*/List<ClueRemark> selectInitialC…

Windows本地MySQL升级

一、删除原来的MySQL 删除 C:\Programs Files、C:\Programs Files(x86)、C:\ProgramData 中的所有MySQL目录 找到MySQL数据库中的data保存到其他位置&#xff0c;升级后可以恢复数据库数据 【备份数据】 删除注册表中MySQL的信息 计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet…

Py01·环境搭建

Python环境搭建 官网下载python3.7.3&#xff1a;https://www.python.org/downloads/release/python-373/ 配置系统环境变量目录&#xff1a; E:\ldtools\python3.7.3\python.exe E:\ldtools\python3.7.3\Scripts\pip.exe python.exe 运行环境 pip.exe 包管理器 安装mysql环…

TypeScript 最近各版本主要特性总结

&#xff08;在人生的道路上&#xff0c;当你的期望一个个落空的时候&#xff0c;你也要坚定&#xff0c;要沉着。——朗费罗&#xff09; TypeScript 官网 在线运行TypeScript代码 第三方中文博客 特性 typescript是javascript的超集&#xff0c;向javascript继承额外的编辑…

K8s之Namespace名称空间详解

文章目录 一、名称空间概念二、名称空间基本操作1、创建Namespace的两种方式2、Namespace资源限额 一、名称空间概念 K8s中文手册&#xff1a; K8s名称空间中文官方手册&#xff1a; Kubernetes 支持多个虚拟集群&#xff0c;它们底层依赖于同一个物理集群。 这些虚拟集群被…

UUID使用

1.UUID是什么&#xff1f; UUID 是指&#xff08;Universally Unique Identifier&#xff09;通用唯一识别码&#xff0c;128位。RFC 4122描述了具体的规范实现。 2.UUID解决问题&#xff1f; 分库分表后自增Id重复问题。 3.UUID作用&#xff1f; UUID 的目的是让分布式系…

[数据库系统] 一、创建表以及使用主键约束(educoder)

1.任务&#xff1a;在数据库中创建一个表。 2.需要掌握&#xff1a; 如何在指定数据库中创建表。 知识点&#xff1a;如何在指定数据库中创建表。 我们先来了解一下在数据库中创建表的规则&#xff1a; CREATE TABLE 表名(字段名,数据类型,字段名,数据类型,.....) 例如&…

Oracle 体系结构

文章目录 Oracle体系结构Oracle的内存结构Oracle的进程结构服务器进程后台进程可选后台进程 物理存储结构逻辑存储结构 概念&#xff1a; Oracle server由Oracle instance和Oracle database组成&#xff0c;Oracle instance由后台进程和共享内存组成&#xff0c;Oracle的实例包…

《走进对象村4》之面向对象的第一大特性——封装

文章目录 &#x1f680;文章导读1、封装的概念2、访问限定修饰符3、如何进行封装4、封装的优点&#xff1a; &#x1f680;文章导读 在本篇文章中&#xff0c;将详细的对封装进行总结&#xff0c;文章仅仅是个人的一些理解&#xff0c;如果有错误的地方&#xff0c;还望指出看完…

八岁都能懂:O(N)条件下在N个元素中找出第K小的元素

目录 1 进入情境1-1 金字塔道具1-2 感觉还不够1-3 万能筛子1-4 怎么用呢 2 代码实现2-1 伪代码描述2-2 完整实例c 3 引申3-1 完美的折半舍弃3-2 找出前K小的元素(topK方法&#xff09;3-3 O(n)效率下求中位数参考资料 1 进入情境 生日&#xff0c;朋友送了一堆弹珠&#xff0c;…

[PyTorch][chapter31][卷积]

前言&#xff1a; 卷积神经网络 是 计算机视觉里面应用非常广泛的一个模型。 卷积神经网络 成功案例 人脸识别,指纹识别等应用. 卷积的本质是图像的特征提取&#xff0c; 在冈萨雷士版本《数字图像处理》处理有专门的章节讲解 各种卷积核&#xff0c;在通讯原理里面&#xff0…