Git 使用指南 --- 版本管理

2024-09-02 07:52
文章标签 管理 版本 git 使用指南

本文主要是介绍Git 使用指南 --- 版本管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

序言

Git 是一个开源的 分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。对一个程序员来说,掌握 Git 的使用是必要的。
 在这个系列中,将详细的介绍 Git 的使用和原理,话不多说,让我们开始吧。


1. 安装 Git

1.1 Linux — Centos

 首先你可以使用指令来查看是否已安装 Git

git

若未安装,则会显示信息:

-bash: git: command not found

可使用指令安装 Git

sudo yum -y install git

1.2 Linux — Ubuntu

 同样的,你可以使用指令来查看是否已安装 Git

git

若未安装,则会显示信息:

Command 'git' not found, but can be installed with:
sudo apt install git

可使用指令安装 Git

sudo apt install git

1.3 Windows

Windows 系统下,大家首先可以点击 Git 官网下载链接 下载 git。在安装时会有许多额外的选项,对初学者的我们来说,一路点击 next 使用默认选项就要够啦。
 现在,怎么使用呢?首先,随便点击一个文件夹,然后点击 查看更多选项,之后,如果弹出的选项中包含如下图像就说明成功安装了!
在这里插入图片描述


2. 初始化本地仓库

 创建一个本地的仓库,本质就是创建一个 进行版本控制的文件目录,要对文件进行版本控制,就必须先创建仓库。

2.1 创建本地仓库

 先进入到你想要进行版本管理的文件夹当中,使用指令 git init,即可创建一个本地仓库:
!](https://i-blog.csdnimg.cn/direct/7893354ae2c843f08498c3c924e8f7f9.png)
这里文件夹中多了一个名为 .git 的文件说明创建成功了!

2.2 初始化用户名和邮箱

 之后便是配置用户信息,你需要配置你的用户名:

git config [--global] user.name "Your_Name"

还需要配置你的邮箱:

git config [--global] user.email "Your_Email"

在这里的 [--global] 代表是一个可选项,如果加上则代表 这台机器所有的 Git 仓库 都会使用该消息配置。

 你可以使用指令来查看你所配置的信息:

git config -l

如果你想要删除相应的信息:

git config unset [--global] user.name // 删除用户名
git config unset [--global] user.email // 删除邮箱

3. 相关操作以及区域概念

 首先我们需要理解 工作区,暂存区,版本库 的概念:

  • 工作区:当我们增删改文件时,所处在的目录。
  • 暂存区:存放在 .git 目录下的 index 文件中,提供了在提交之前对更改进行组织和准备的能力
  • 版本库:⼯作区有⼀个隐藏⽬录 .git ,它不算⼯作区,⽽是 Git 的版本库。这个版本库⾥⾯的所有⽂件都可以被 Git 管理起来,每个⽂件的修改、删除都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

这些概念现在大家看来会十分摸不着头脑,但是随着我们后面逐渐的深入,大家再来看就会有自己的理解了,但是现在大家请记住 真正进行版本管理的地方是版本库!

3.1 添加文件

 我们可以使用指令将一个或多个文件从工作区存入暂存区:

git add [file1] [file2] [file3]... // 将指定文件添加到暂存区
git add . // 将工作区所有文件添加到暂存区

 之后,我们可以使用指令将文件从暂存区存入到版本库中:

git commmit -m "Your_Msg" // 在这里,需要描述你的提交细节,帮助其他人看到更好的理解

在完成这两步之后,会显示信息:
在这里插入图片描述
一个文件被改变,插入一行内容。

3.2 删除文件

 如果我们想要删除一个版本库中的文件,首先你需要使用指令将该修改写入暂存区中:

git rm [file]

之后将删除操作提交到版本库,完成更新:

git commmit -m "Your_Msg" 

3.3 修改文件

 首先我对我的文件对多写入了一行内容,先介绍一个命令可以查看你仓库的状态(那些文件被修改后还没有添加提交):

git status

输入该指令后,我们可以看到:
在这里插入图片描述
他告诉我们 readme 这个文件被修改了,我们可以使用指令来查看工作区和暂存区的区别:

git diff [file]

这里输出的格式可能大家会觉得很奇怪:
在这里插入图片描述

这里的 - 代表的是暂存区中的内容,+ 代表的是工作区中的内容(最新的),所以
@@ -1 +1, 2 @@ 代表的是:

  • 旧内容是第一行
  • 新内容是第一行开始到第二行

之后将修改的文件上传的版本库的操作和添加文件一摸一样。


3.4 查看日志信息

 我们可以通过指令来查看我们的历史提交记录:

git log

在这里插入图片描述
可以看到这里记录所有提交的详细信息,并且每一次提交都会分配一个 commit id每一次提交都代表一个新的版本,所以这里可以理解为这是一个版本号

 你也可以添加选项让更为优雅的输出相应的信息:

git log --pretty=oneline

在这里插入图片描述

3.5 .git 文件

 在经过了上述一系列操作之后,我们再查看这个神奇的 .git 文件,我们使用指令 tree .git/ 以树状的形式查看目录:
在这里插入图片描述
我们介绍其中比较重要的几个组成部分:

  1. index:这就暂存区,我们 add 的文件都存在于此处

  2. HEAD:指向 当前正在工作的分支,默认指向 master(多分支时进一步介绍): 在这里插入图片描述
    master 又指向的是什么呢?使用 cat 指令查看一下:
    在这里插入图片描述
    一串很长的不知道是什么的序列,不知道大家还记得我们在前面讲到过一个概念commit_id,这串序列就是 commit_id,我们使用 git log 指令打印一下提交记录,查看是否存在这样一个 commit_id
    在这里插入图片描述
    不仅找到了还是第一个(最新那个),不难推断 — master 保存的就是当前最新 的 commit id

  3. objects:为 Git 的对象库,⾥⾯包含了创建的各种版本库对象及内容。当执⾏ git add 命令时,暂存区的⽬录树被更新,同时⼯作区修改(或新增)的⽂件内容被写⼊到对象库中的⼀个新的对象中,就位于 .git/objects ⽬录。


4. 版本回退

4.1 回退指令

 在开始讲解回退之前,我们想了解一个重要的指令:

git reset [--soft | --mixed | --hard] [HEAD]

回退 本质是 将版本库中的内容进⾏回退,⼯作区或暂存区是否回退由命令参数决定。

 现在我们先介绍前一个选项:
--mixed 为默认选项,使⽤时可以不⽤带该参数。该参数 将暂存区的内容退回为指定提交版本内容,⼯作区⽂件保持不变。
--soft 参数对于 ⼯作区和暂存区的内容都不变,只是将版本库回退到某个指定版本。
--hard 参数 将暂存区与⼯作区都退回到指定版本。切记⼯作区有未提交的代码时不要⽤这个命令,因为⼯作区会回滚,你没有提交的代码就再也找不回了,所以使⽤该参数前⼀定要慎重 !!!

在这里向大家举个栗子:
在这里插入图片描述
 现在我们介绍第二个参数,该参数代表我们需要回退的版本,默认 HEAD 是当前版本:

  • HEAD^ 代表上一个版本,HEAD^^ 代表上两个版本,以此类推
  • commit id 代表的就是一个版本号,可使用 commit id 回退到指定版本,使用 git log / git reflog 查看 commit id

4.2 回退场景

1. 只是修改工作区中的代码

 我完成了第一版代码,并且已经上传到版本库中了。现在我想要在第一版的基础上进行改善,但是经过改造之后原本可以正常运行的代码成功的歇菜了。
 现在我想要将我工作区的代码回退到版本一,方案一:最笨的方法就是手动删除当然极其不推荐。
 方案二:使用指令 git checkout -- [file] 将工作区的代码更新为最新提交到暂存区的文件

2. 修改的代码添加到暂存区

 现在我不小心将我的代码也添加到了暂存区中,这又改怎么回退到版本一呢?
使用指令 git reset --hard HEAD ,就可以将你的工作区和暂存区便回来啦!

3. 修改的代码提交到版本库

 这个就直接使用我们的指令 git reset --hard HEAD^,解决起来还是比较简单。

4. 回退的本质

 在 Git 内部当中,是怎么实现版本回退的呢,请看下图:
在这里插入图片描述
我们在前面介绍过 master 保存的就是当前最新的 commit id(版本),改变当前的版本,也就是改变 master 的指向。


5. 总结

 在这篇文章中我们介绍了 Git 的版本管理以及其背后的部分原理,希望大家有所收获!

这篇关于Git 使用指南 --- 版本管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1129416

相关文章

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

git ssh key相关

step1、进入.ssh文件夹   (windows下 下载git客户端)   cd ~/.ssh(windows mkdir ~/.ssh) step2、配置name和email git config --global user.name "你的名称"git config --global user.email "你的邮箱" step3、生成key ssh-keygen

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi