【Linux】版本管理器Git

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


前言

本篇文章讲解的是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~🙈🙈

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

malloc不出对象

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值