【Linux】版本管理器Git

news2025/2/28 23:48:46

🏖️作者:@malloc不出对象
⛺专栏:Linux的学习之路
👦个人简介:一名双非本科院校大二在读的科班编程菜鸟,努力编程只为赶上各位大佬的步伐🙈🙈
在这里插入图片描述

目录

    • 前言
    • 一、Git是什么
    • 二、Git有什么作用
    • 三、Git的使用
      • 3.1 新建仓库
      • 3.2 克隆远程仓库到本地仓库
      • 3.3 将新增文件添加到暂存区
      • 3.4 将新增文件添加到本地仓库
      • 3.5 查看日志信息
      • 3.6 查看仓库状态
      • 3.7 将新增文件推送到远程仓库
      • 3.8 拉取远端仓库
      • 3.9 删除远端仓库的文件


前言

本篇文章讲解的是Git的使用,它可以帮助开发人员去管理好项目代码,是我们以后工作中非常重要的一个工具。

一、Git是什么

Git是一个开源的分布式版本控制系统,它可以帮助开发人员协作地管理项目代码。由于它是一个分布式系统,所以即使在没有网络连接的情况下,开发人员仍然可以继续工作并跟踪代码的更改。它最初由Linus Torvalds创建,用于管理Linux内核代码。

`Git``具有以下特点:

  • 分布式:每个人都可以在本地拥有完整的版本库,不需要集中式的版本控制系统。
  • 高效性:Git的设计目标是为了高效地处理大型项目。它可以快速地处理大量的文件和版本历史记录。
  • 分支管理:Git提供了强大的分支管理功能,使得开发人员可以创建新的分支,进行并行开发,合并分支,解决冲突等等。
  • 安全性:Git使用SHA-1哈希算法来唯一标识每个提交,从而确保数据的完整性和安全性。
  • 灵活性:Git非常灵活,可以根据项目需要进行配置和扩展。它提供了许多命令行工具和插件,使得用户可以自定义和扩展Git的功能。

Git使用起来很简单,只需要几个基本的命令就可以完成大多数的操作。例如,创建一个新的代码仓库可以使用“git init”命令,将代码提交到版本库可以使用“git add”和“git commit”命令,合并分支可以使用“git merge”命令等等。

二、Git有什么作用

Git的作用是帮助开发人员管理代码并促进协作开发。具体来说,Git可以实现以下功能:

  • 版本控制:Git可以跟踪代码的版本历史记录,包括代码修改、添加、删除等操作。开发人员可以在任何时间点回退代码版本或查看以前的版本,从而避免代码丢失和错误。
  • 协作开发:Git允许多个开发人员在同一个代码库上协作开发,每个人都可以在本地创建自己的分支并进行修改。开发人员可以将自己的代码提交到代码库,其他人可以查看和审阅代码,提出修改建议并进行代码合并。
  • 分支管理:Git提供了强大的分支管理功能,允许开发人员创建、合并、删除分支,使得代码的并行开发和版本控制更加灵活。
  • 回滚代码:当代码出现错误或者出现严重的问题时,Git可以快速地回滚到之前的版本,避免损失和影响。
  • 备份代码:Git可以将代码库备份到远程服务器或云存储中,确保代码的安全性和可靠性。

总之,Git是一个强大的版本控制系统,可以帮助开发人员更好地管理和协作开发代码。通过使用Git,开发人员可以更加高效地编写、测试和部署代码,从而提高软件开发的效率和质量。

三、Git的使用

3.1 新建仓库

首先我们需要在远端服务器上新建一个仓库,之后我们可以把我们的本地仓库的文件备份到这个远程仓库中,这样是为了能够保证文件的安全性同时也可以非常方便的去维护我们的代码。因为本地仓库的文件我们只能在我们自己的机器上看到,一旦我们的机器出现问题导致本地仓库的文件丢失我们就无法就行维护了,而将其备份到远端仓库我们能随时随地确保文件的安全性!!

Gitee(码云)是一个中国的代码托管平台,类似于GitHubGitLab,它提供了基于Git的代码托管、版本控制、协作开发、项目管理、CI/CD等功能。Gitee提供了丰富的功能,包括代码托管、私有仓库、代码贡献分析、在线编译、Issue跟踪、代码片段、代码审查、Webhooks等功能。与GitHubGitLab相比,Gitee更加注重服务于中国的开发者,提供了更快的访问速度、更方便的部署方式以及更加贴合中国国情的社区服务。

以下操作我们都将在Gitee上进行,首先我们需要登录`Gitee``,新建一个远程仓库:

在这里插入图片描述

在这里插入图片描述

我们新建仓库一开始的状态是私有的,你必须再上传过文件之后才能进行开源(公开)。

在这里插入图片描述

关于.gitignore的配置大家可以根据自己的需求自行去配置,我就不做过多的讲解了。

3.2 克隆远程仓库到本地仓库

我们点击复制地址,在Linux中执行git clone 地址,就将远端仓库拉取到本地仓库了。

在这里插入图片描述

在这里插入图片描述

此时可以看到我们的linux远程仓库就被克隆到本地仓库了,并且我们也可以看到我们在远程仓库中初始化的文件。

那么我们的本地仓库在哪里呢?其实.git就是我们的本地仓库!!

在这里插入图片描述

我们不要去随意去修改.git里面的文件,它设为隐藏也是有一部分原因的。

3.3 将新增文件添加到暂存区

先把我们需要保存的文件拷贝到当前目录下:

在这里插入图片描述

下一步将我们的新增文件添加到暂存区

git add . 或者 git add --all #将当前目录添加到暂存区
git add 文件名 #将指定文件添加到暂存区

3.4 将新增文件添加到本地仓库

git commit -m '日志信息' #将新增的内容添加到本地仓库.git

也许你会看到下面的信息:

在这里插入图片描述

这是因为你是第一次提交文件到本地仓库,所以需要设置你的邮箱和用户名。这是为了方便别人找到你,也许别人在看了你的代码之后有问题或者有建议可以通过邮箱发送给你,我们这个邮箱就写我们平常使用的QQ邮箱就好了,用户名没有要求。

在这里插入图片描述

在设置好我们的邮箱和用户名之后我们就能提交文件到我们的本地仓库.git了!!

此时我们对比一下之前的.git本地仓库可以明显发现增加了一些文件:

在这里插入图片描述

3.5 查看日志信息

git log 是一个 Git 命令,用于显示 Git 仓库的提交历史。它可以显示提交的作者、提交时间、提交的哈希值、提交信息等内容。使用 git log 命令可以帮助我们了解 Git 仓库的提交历史,以及各个分支和标签的关系。这对于跟踪项目的进展、排查问题以及合并代码等方面非常有用。

但需要注意的是,Git log 命令默认只会显示本地仓库中的提交记录。如果想要查看远程仓库的提交记录,需要先通过Git fetch 命令将远程仓库的最新代码同步到本地仓库,然后再使用 Git log 命令查看提交记录。其实git log还有很多命令选项,这里我们就不一一进行演示了,感兴趣的读者可以自行去研究研究。

git log #查看日志信息

在这里插入图片描述

3.6 查看仓库状态

git status 主要是用来显示本地仓库的状态。它会显示您在本地仓库中进行的更改,并告诉您哪些文件已修改但尚未暂存(Changes not staged for commit)、哪些文件已经被暂存但尚未提交(Changes to be committed)以及未跟踪的文件(Untracked files)。
虽然 Git 是分布式版本控制系统,可以将代码库分发到多个计算机上,但是 git status 命令只会显示当前计算机上的本地仓库的状态。如果您想查看远程仓库的状态,您需要使用其他 Git 命令,如 git remotegit fetchgit pull 等。

git status #查看仓库状态

在这里插入图片描述

3.7 将新增文件推送到远程仓库

git push #将新增内容推送到远端仓库

我们的本地仓库有了新增文件后,我们就可以使用git push发送到我们的远程仓库保存了!!

在这里插入图片描述

此时我们刷新Gitee中我们的远程仓库就可以看到本地仓库发送过来的文件啦!!

在这里插入图片描述

在这里插入图片描述

此时我们看到仓库状态的变化,一开始在commit完文件之后提示我们将文件git push,在我们git push完之后就没有这个提示了!!

在这里插入图片描述

3.8 拉取远端仓库

git pull #拉取远端仓库,将本地仓库的信息和远端仓库的信息保持一致

我们先在远端仓库修改了一下main.c中的代码:

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

然后再在本地仓库建立一个新的空文件,我们同时在两个平台下各自进行修改,这样是为了更好的展示本地仓库的信息和远端仓库的信息保持一致的效果。

我们在上传mytest.txt文件到本地仓库时为什么出现了错误???

在这里插入图片描述

出现这种情况的主要原因是远程仓库与本地仓库不一致造成的,我们先在远程仓库分支中修改了main.c文件并进行了提交,但是本地库分支还没有将这些更改合并到当前分支中,所以造成了push失败。我们可以通过下图来理解:

在这里插入图片描述

那么我们的解决方法就是先进行git pull操作,将远程仓库分支上的更改合并到本地分支中,然后再进行推送,这可以避免出现代码冲突的情况,以及确保你的更改是基于最新的代码库。

这里我在网上查找相关资料时,看见有些博客上写着这是由于README.md文件不在本地代码目录中造成的???

这个观点我是不太认同的,README.md 文件是否在本地代码目录中并不会直接导致推送失败,README.md是一个文本文件,通常存在于一个软件项目的根目录中,用于向开发者和用户提供有关该项目的信息。通常,README.md文件包含项目的描述、安装和使用说明、贡献指南、许可证信息和其他相关内容。而这里推送失败的主要原因是因为远程分支和本地分支的提交历史不一致,或者其他开发者已经向远程分支推送了新的修改,导致推送冲突等。 如果 README.md 文件确实是被修改过而没有被提交到本地仓库的话,这种情况确实也是会导致推送失败,但就上述情况来讲这种可能性很小!!

解决办法:我们直接使用git pull之后,把两段不相干的分支进行强行合,这里可能会进入一个编辑页面,我们只需要先ESC,然后敲 q! 即可退出!!

在这里插入图片描述

通过查看本地仓库状态和日志信息我们从中能得到很多隐含的信息!!!这一点非常重要。

在这里插入图片描述

另外在git pull将远程仓库的分支同步到本地仓库后,我们也可以看到的main.c此时确实已经是修改之后的内容了:

在这里插入图片描述

另外我们还可以使用下图中的命令:git pull --rebase origin master,该指令意为先取消 commit 记录,并且把它们临时保存为补丁(patch)(这些补丁放到”.git/rebase”目录中),之后同步远程库到本地,最后合并补丁到本地库之中。

在这里插入图片描述

其实这里还是有很多其他的指令来解决这个问题的,这里我就列出两种供大家参考。


最后一步我们执行git push把本地仓库的文件推送到远程仓库中就解决问题了。

在这里插入图片描述

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

如果你之前采用的是第二种解决方式:git pull --rebase origin master使远程仓库与本地仓库保持同步,此时执行git push origin master即可。
如果还是push不了的话,此时我们可以使用 git push -f origin master 命令强制将本地分支推送到远程分支,但是这样做可能会导致其他人的工作被覆盖,因此请谨慎使用。

在这里插入图片描述

3.9 删除远端仓库的文件

git rm 文件名 #删除远端仓库的文件

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


本篇文章的内容就讲到这里了,关于Git对于以后我们的工作肯定是有很大帮助的,本篇文章虽然只是展示了一小部分关于Git的操作,但是博主很用心的进行讲解了,如果觉得写的还不错大家可以点点赞哦orz~🙈🙈

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

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

相关文章

开源C#代码生成器,专注.NET,Sqlserver,最简单,最干净,支持自编码的开源工具,SmartSoftHelp 开发辅助优化工具

开源C#代码生成器,专注.NET,Sqlserver,最简单,最干净,支持自编码的开源工具,SmartSoftHelp 开发辅助优化工具! 下载地址:https://pan.baidu.com/s/1XLL_fLxVTw4erYZLj8-MzA?pwd888…

搭建python运行环境

安装Miniconda3 清华镜像 https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/ 下载 安装 next————agree————这俩选哪个都行,他选的第二个————安装路径———— 配置系统环境变量 Path miniconda3所在的路径 D:\Autils\miniconda3 Scri…

ChatGPT 最有可能取代哪些职业?

ChatGPT 的应用场景ChatGPT 最可能取代哪些职业?写在最后 ChatGPT 的应用场景 ChatGPT 的应用场景大体上可以归类为三大模块。 第一类是 代码相关 的任务场景。包含程序语言之间的相互转换(如 python 转 java)、程序命令的生成、代码 bug 的…

Gateway新一代网关

Gateway功能:路由 过滤 一、概述 官网地址 不使用网关存在的问题: 1、客户端需要记录不同微服务地址,增加客户端的复杂性 2、每个后台微服务都需要认证 3、http 发请求,涉及到跨域 4、后台新增微服务,不能动态知道地…

【持久层框架】mybatis-plus超详细讲解

文章目录 一、简介二、愿景三、特性四、支持数据库五、快速指南步骤1、创建数据库 mybatis_plus2、导入相应的依赖3、连接数据库4、编写代码5、小结 六、配置日志七、常用注解八、CRUD扩展Insert 插入参数说明主键生成策略分布式系统唯一id生成雪花算法主键自增 更新操作参数说…

纪念一下自己做的第一款开发板

文章目录 1. 硬件电路2. 成品展示3. 遇到的问题4. HelloWorld 前言:之前乐鑫搞活动白嫖了10个ESP32-S2模组,想着把它给利用了,然后先从一个开发板做起,等玩明白了再去做一些自己的设计,从网上找了一些资料就开始干&…

【★前后端的交互★】Servlet API

欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示:重难点★✔ 蓝色文字表示&#…

了解一下Spring核心概念——IOC IOC容器 DI Bean

文章目录 1 Spring家族2 Spring发展史3 Spring系统架构3.1 系统架构图3.2 学习路线 4 Spring核心概念4.1 目前项目中的问题4.2 IOC、IOC容器、Bean、DI4.2.1 IOC(Inversion of Control)控制反转4.2.2 DI(Dependency Injection)依赖…

(免费分享)springboot,vue物业管理系统

一、项目技术 后端框架:springboot 前端框架:elementUIvue 主要实现了用户登录、社区信息展示、物业公告、社区设施、物业人员信息。 进入物业系统管理后端。实现了社区的管理,包括基本信息管理、周边设施管理、物业公告管理。楼盘管理包括楼…

AI对话-Free Chat免费无限制

目录 前言 使用方法 提问 推荐线路 前言 chat.4 和 chat.5 线路的响应改成通过在 Netlify 的部署来响应了。Netlify 不像 Vercel 那样还限制 Edge Function 的调用次数,很适合部署本项目。现在这两个线路的成本最低了,最优先推荐大家使用。 使用方法 提问 比如我问他:…

docker学习笔记(3)

目录 Docker命令 进程相关命令 镜像相关命令 查看镜像 Docker 数据管理 数据卷 大家在使用Xftp的时候,千万要先用本地端ping一下虚拟机IP,不然你在那里创建几次都没有用。 Docker命令 进程相关命令 # 启动Docker命令 systemctl start docker # 停…

网络基础学习:ip地址的知识

网络基础学习:ip地址的知识 IP地址是什么?如何查询计算机ipip分为几类IPv4和IPv6IPv4和IPv6的通信 IP地址是什么? IP地址是指用于标识在网络上的设备或节点的一组数字,它是Internet协议(IP)中使用的一种地…

【C++】C++入门知识

😁作者:日出等日落 🔔专栏:C 不要去等谁,所有的不期而遇都在路上。 前言 C是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式等。熟悉C语言之后&…

通过点云获取碰撞向量

T:what Y:why W:how Y 针对点云的无序性,无法通过坐标索引进行查询,常常将点云地图转换其他类型的地图,如Octomap,从而进行碰撞检测; W 为快速进行机器人与障碍物的位置计算&…

C高级day3

1.编写一个名为myfirstshell.sh的脚本,它包括以下内容。 1、包含一段注释,列出您的姓名、脚本的名称和编写这个脚本的目的 2、和当前用户说“hello 用户名” 3、显示您的机器名 hostname 4、显示上一级目录中的所有文件的列表 5、显示变量PATH和HOM…

【前端技术】Vue3 02:基础语法

接下来介绍下 Vue 的基础语法,包括渐进式框架、单文件组件、组合式 API 和选项式 API等基础要点和 v-xx 指令和其余基础语法,这和官方教程的顺序不大一致,我认为先学习 v-xx 指令可能更有助于大家的理解及学习。 目录 1 前言 1.1 单文件组件…

【Linux】Linux中的编辑器vim

🏖️作者:malloc不出对象 ⛺专栏:Linux的学习之路 👦个人简介:一名双非本科院校大二在读的科班编程菜鸟,努力编程只为赶上各位大佬的步伐🙈🙈 目录 前言一、vim的概念二、命令模式2…

SpringBoot【开发实用篇】---- 数据层解决方案

SpringBoot【开发实用篇】---- 数据层解决方案 1. SQL数据源技术持久化技术数据库技术 2. NoSQLSpringBoot整合Redis安装基本操作整合 SpringBoot整合MonggoDB安装基本操作整合 SpringBoot整合ES安装基本操作整合 开发实用篇前三章基本上是开胃菜,从第四章开始&…

“1+X+N”模式助力企业数字化转型

近期,中电金信顺利完成某股份制银行“基于战略解析与业务架构的全行科技规划项目”交付。针对客户的实际业务需求,中电金信采用“1XN”服务模式,服务客户全面的企业架构转型规划。项目组联合行方协同创新,首次将企架建模方法应用于…

【腾讯云 findops Crane集训营】深入了解 Crane 开源项目之实验操作指南

引言: 最近我参加了由腾讯云联合 CSDN 推出的“腾讯云 Finops Crane 开发者集训营”活动,通过这个活动我对腾讯云的 Finops Crane 开源项目有了更深入的了解。在本篇博客中,我将分享我对该项目的认识和体验,并介绍其中一些关键特性…