centos下升级git版本

这篇具有很好参考价值的文章主要介绍了centos下升级git版本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 问题描述

centos7系统默认的git安装版本是1.8,但是在项目构建中发现git版本过低,导致构建AI模型环境时出现各种错误,于是用源码编译的方式进行升级,同时该文章也适用于安装新的git。

2. 升级安装

2.1 第一步卸载原有的git

rpm -e --nodeps git 仅删除该git包
# yum remove git    采用yum删除git,同时也将删除其依赖包,例如go,建议不采用该命令

2.2. 安装相关依赖

yum install -y curl-devel expat-devel openssl-devel zlib-devel asciidoc
yum install -y gcc perl-ExtUtils-MakeMaker

2.3. 安装git

下载解压

#下载git从https://github.com/git/git/releases
wget https://github.com/git/git/archive/v2.27.0.tar.gz -O git.tar.gz
tar -zxvf git.tar.gz
cd git-2.27.0
#将压缩包解压到/usr/local/src目录
#tar -C /usr/local/src -zxvf git.tar.gz

编译安装

# 编译并设置安装路径
make prefix=/usr/local/bin/git all
# 安装
make install

添加环境变量

# 写入到环境变量中,但重启则失效(方法一)
export PATH=$PATH:/usr/local/bin/git/bin

# 写入到环境变量中(方法二)
echo "export PATH=$PATH:/usr/local/bin/git/bin" >> /etc/profile && source /etc/profile

# 制作软链接(方法三)
rm -f /usr/bin/git && ln -s /usr/local/bin/git /usr/bin/git

# 查看是否已安装和版本号
git --version

3 git介绍

3.1 Git 是什么?

那么,简单地说,Git 究竟是怎样的一个系统呢? 请注意接下来的内容非常重要,若你理解了 Git 的思想和基本工作原理,用起来就会知其所以然,游刃有余。 在学习 Git 时,请尽量理清你对其它版本管理系统已有的认识,如 CVS、Subversion 或 Perforce, 这样能帮助你使用工具时避免发生混淆。尽管 Git 用起来与其它的版本控制系统非常相似, 但它在对信息的存储和认知方式上却有很大差异,理解这些差异将有助于避免使用中的困惑。

centos下升级git版本,AI运行环境,git,cenos,AI模型

直接记录快照,而非差异比较

Git 和其它版本控制系统(包括 Subversion 和近似工具)的主要差别在于 Git 对待数据的方式。 从概念上来说,其它大部分系统以文件变更列表的方式存储信息,这类系统(CVS、Subversion、Perforce 等等) 将它们存储的信息看作是一组基本文件和每个文件随时间逐步累积的差异 (它们通常称作 基于差异(delta-based) 的版本控制)。

centos下升级git版本,AI运行环境,git,cenos,AI模型

Figure 4. 存储每个文件与初始版本的差异.

Git 不按照以上方式对待或保存数据。反之,Git 更像是把数据看作是对小型文件系统的一系列快照。 在 Git 中,每当你提交更新或保存项目状态时,它基本上就会对当时的全部文件创建一个快照并保存这个快照的索引。 为了效率,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。 Git 对待数据更像是一个 快照流

centos下升级git版本,AI运行环境,git,cenos,AI模型

Figure 5. 存储项目随时间改变的快照.

这是 Git 与几乎所有其它版本控制系统的重要区别。 因此 Git 重新考虑了以前每一代版本控制系统延续下来的诸多方面。 Git 更像是一个小型的文件系统,提供了许多以此为基础构建的超强工具,而不只是一个简单的 VCS。 稍后我们在Git 分支讨论 Git 分支管理时,将探究这种方式对待数据所能获得的益处。

近乎所有操作都是本地执行

在 Git 中的绝大多数操作都只需要访问本地文件和资源,一般不需要来自网络上其它计算机的信息。 如果你习惯于所有操作都有网络延时开销的集中式版本控制系统,Git 在这方面会让你感到速度之神赐给了 Git 超凡的能量。 因为你在本地磁盘上就有项目的完整历史,所以大部分操作看起来瞬间完成。

举个例子,要浏览项目的历史,Git 不需外连到服务器去获取历史,然后再显示出来——它只需直接从本地数据库中读取。 你能立即看到项目历史。如果你想查看当前版本与一个月前的版本之间引入的修改, Git 会查找到一个月前的文件做一次本地的差异计算,而不是由远程服务器处理或从远程服务器拉回旧版本文件再来本地处理。

这也意味着你在离线或者没有 VPN 时,几乎可以进行任何操作。 如你在飞机或火车上想做些工作,就能愉快地提交(到你的 本地 副本,还记得吗?), 直到有网络连接时再上传。如你回家后 VPN 客户端不正常,那么也仍能工作。 使用其它系统的话,做到这些是不可能或很费力的。 比如,用 Perforce 的话,没有连接服务器时几乎不能做什么事;而用 Subversion 和 CVS 的话, 你能修改文件,但不能向数据库提交修改(因为你的本地数据库离线了)。 这样似乎问题不大,但是你可能会惊喜地发现它带来的巨大的不同。

3.2 Git 保证完整性

Git 中所有的数据在存储前都计算校验和,然后以校验和来引用。 这意味着不可能在 Git 不知情时更改任何文件内容或目录内容。 这个功能建构在 Git 底层,是构成 Git 哲学不可或缺的部分。 若你在传送过程中丢失信息或损坏文件,Git 就能发现。

Git 用以计算校验和的机制叫做 SHA-1 散列(hash,哈希)。 这是一个由 40 个十六进制字符(0-9 和 a-f)组成的字符串,基于 Git 中文件的内容或目录结构计算出来。 SHA-1 哈希看起来是这样:

24b9da6552252987aa493b52f8696cd6d3b00373

Git 中使用这种哈希值的情况很多,你将经常看到这种哈希值。 实际上,Git 数据库中保存的信息都是以文件内容的哈希值来索引,而不是文件名。

3.3 Git 一般只添加数据

你执行的 Git 操作,几乎只往 Git 数据库中 添加 数据。 你很难使用 Git 从数据库中删除数据,也就是说 Git 几乎不会执行任何可能导致文件不可恢复的操作。 同别的 VCS 一样,未提交更新时有可能丢失或弄乱修改的内容。但是一旦你提交快照到 Git 中, 就难以再丢失数据,特别是如果你定期的推送数据库到其它仓库的话。

这使得我们使用 Git 成为一个安心愉悦的过程,因为我们深知可以尽情做各种尝试,而没有把事情弄糟的危险。 更深度探讨 Git 如何保存数据及恢复丢失数据的话题,请参考撤消操作。

三种状态

现在请注意,如果你希望后面的学习更顺利,请记住下面这些关于 Git 的概念。 Git 有三种状态,你的文件可能处于其中之一: 已提交(committed)已修改(modified)已暂存(staged)

  • 已修改表示修改了文件,但还没保存到数据库中。

  • 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。

  • 已提交表示数据已经安全地保存在本地数据库中。

这会让我们的 Git 项目拥有三个阶段:工作区、暂存区以及 Git 目录。

centos下升级git版本,AI运行环境,git,cenos,AI模型

Figure 6. 工作目录、暂存区域以及 Git 仓库.

工作区是对项目的某个版本独立提取出来的内容。 这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。

暂存区是一个文件,保存了下次将要提交的文件列表信息,一般在 Git 仓库目录中。 按照 Git 的术语叫做“索引”,不过一般说法还是叫“暂存区”。

Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。 这是 Git 中最重要的部分,从其它计算机克隆仓库时,复制的就是这里的数据。

基本的 Git 工作流程如下:

  1. 在工作区中修改文件。

  2. 将你想要下次提交的更改选择性地暂存,这样只会将更改的部分添加到暂存区。

  3. 提交更新,找到暂存区的文件,将快照永久性存储到 Git 目录。

如果 Git 目录中保存着特定版本的文件,就属于 已提交 状态。 如果文件已修改并放入暂存区,就属于 已暂存 状态。 如果自上次检出后,作了修改但还没有放到暂存区域,就是 已修改 状态。

3.4 git常用命令

  • 克隆指定分支

git clone -b <指定分支名> <远程仓库地址> 

示例:
git clone -b bestore_master ssh://git@git-ssh.xxx.com/xxx.git
  • 查看当前分支

git branch
  • 查看所有分支

git branch -r 

或者

git branch -a
  • 切换分支:

git checkout <指定分支名>

示例:

git checkout bestore_sprint_1115
  • 拉代码

git pull
  • 提交修改到缓存中

git add -A  提交所有变化;
git add -u  提交被修改(modified)和被删除(deleted)文件,不包括新文件(new);
git add .  提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
  • 提交代码

git commit -m "注释"
  • 推送代码

git push
  • 初始化:创建一个git仓库,创建之后就会在当前目录生成一个.git的文件

git init
  • 添加文件:把文件添加到缓冲区

git add filename
  • 删除文件

git rm filename
  • 查看git库的状态

git status;未提交的文件,分为两种,add过已经在缓冲区的,未add过的
  • 比较文件

git diff filename,如果文件修改了,还没有提交,就可以比较文件修改前后的差异
  • 查看日志

git log
  • 版本回退

git reset,可以将当前仓库回退到历史的某个版本
  • 回退到上一个版本

git reset --hard HEAD^,(HEAD代表当前版本,有一个^代表上一个版本,以此类推)
  • 回退到指定版本

git reset --hard d7b5,(其中d7b5是想回退的指定版本号的前几位)
  • 查看命令历史

git reflog,查看仓库的操作历史
  • 增加了远程仓库abc

git remote add origin git://127.0.0.1/abc.git
  • 移除远端仓库

git remote remove origin
  • 将本地仓库内容推送到远端仓库

git push -u origin master,(-u 表示第一次推送master分支的所有内容,后面再推送就不需要-u了),跟commit的区别在于一个是提交到本地仓库,一个是提交到远程仓库
  • 提交到git时,忽略部分IDE产生的文件

git commit -m 'update .gitignore'

在根目录下创建.gitignore文件, 注意:新加.gitignore只能忽略那些原来没有被提交过的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。

解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

gitignore文件内容,举例如下:

/**/target
/**/.project
/**/.classpath
/**/.settings


 文章来源地址https://www.toymoban.com/news/detail-808354.html

到了这里,关于centos下升级git版本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CentOS 7(2009) 升级 GCC 版本

       CentOS 7 默认安装的 gcc 版本为 4.8 ,但是很多时候都会需要用到更高版本的 gcc 来编译源码,那么本文将会介绍如何在线升级 CentOS 的 gcc 版本。 (1). 安装 centos-release-scl ; (2). 安装 devtoolset ; [注]:笔者这里安装的是 gcc 7.x 版本的,若想安装其它版本,则修改对应的大版本

    2024年02月03日
    浏览(44)
  • centos7 升级 gcc 版本

    GNU Mirror List 查看动态库版本 查找gcc生成的最新动态库 查看libstdc++.so 进入libstdc++.so配置目录 CentOS 7官方源的gcc最新版本是4.8.5,发布于2015年,年代久远且不支持c++14。要编译c++14及以上项目,必须要升级现有版本或者安装高版本的gcc。红帽其实已经编译好了高版本的gcc,但未

    2023年04月26日
    浏览(53)
  • CentOS 7升级gcc/G++版本

            Centos 7默认gcc版本为4.8,有时需要更高版本,只需要执行几条命令,无需下载源码编译编译。 安装centos-release-scl 安装devtoolset 注意,如果想安装7.*版本的,就改成devtoolset-7-gcc*,以此类推 激活对应的devtoolset 查看gcc版本 这条激活命令只对本次会话有效,重启会话后还

    2024年02月06日
    浏览(41)
  • Centos 7 kernel升级到指定的版本

    一、升级到最新kernel版本 1、查看当前kernel版本 # uname -a 2、导入elrepo的key,然后安装elrepo的yum源 # rpm -import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org # rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm 3、使用以下命令列出可用的内核相关包,如下图: yum --disablerepo=\\\"*\\\" --enabl

    2024年02月05日
    浏览(38)
  • Centos 升级Docker 至最新版本(镜像容器不丢失)

    卸载旧版本的Docker 安装需要的软件包 添加Docker的yum源 更新yum包 查看所有仓库中提供的Docker版本 安装新版本Docker 或安装指定版本 启动Docker 开启Docker开机自启 查看Docker版本 查看原有容器 如果启动容器报错 报错内容:Error response from daemon: unknown or invalid runtime name: docker-runc

    2024年02月04日
    浏览(43)
  • node、npm版本升级,同时解决升级后vue项目运行报错

    1、首先,需要确定当前安装的Node.js的版本。可以通过在命令行中运行以下命令来查看: 2、如果当前版本较旧,可以考虑升级到最新版本。可以访问Node.js官方网站(https://nodejs.org/)下载最新的Node.js安装包。 不想下载最新的版本,也可以查看历史版本进行下载 3、在安装完成

    2024年02月10日
    浏览(74)
  • CentOS离线升级OpenSSH至9.6p1版本

    一、问题背景         目前经过安全部门漏洞扫描设备扫描出CentOS系统存在OpenSSH相关漏洞,现修复建议是OpenSSH过低版本升级至9.6p1版本,但是升级过程中其他依赖也需安装,例如OpenSSL、zlib等。 二、下载安装包         需要下载对应版本安装包后,上传至服务器上(

    2024年04月23日
    浏览(44)
  • CentOS常见问题应对,升级make和gcc版本

    本文讲解了编译源码过程中的常见问题,以及如何升级make和gcc版本。 点击上方“后端开发技术”,选择“设为星标” ,优质资源及时送达 今天讲一个 CentOS 中编译时的常见问题:在编译源码过程中 make 或者 gcc 版本过低导致的异常 configure: error。 具体报错如下: 此问题尤其

    2024年02月01日
    浏览(39)
  • git版本升级

    2.17.1之前执行指令: git update (现在大部分应该都不用这个指令,都高于这个版本) 2.17.1之后执行指令: git update-git-for-windows 可通过 git --version 查看版本 如图所示 等待安装成功即可

    2024年02月07日
    浏览(39)
  • linux升级git版本

    想要在linux上更新git版本,我查了很多资料,但是似乎都需要先把旧版本git删掉然后再进行更新 1、查看git版本 查看git当前版本 2、安装依赖 源代码安装和编译git,需要安装依赖,具体命令: 3、卸载旧版本的git 不把旧版本卸载掉的话会导致升级失败 4、打开文件夹 选择/usr/local/src文

    2024年02月08日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包