【Linux】分布式版本控制工具git

​📝个人主页:@Sherry的成长之路

🏠学习社区:Sherry的成长之路(个人社区)

📖专栏链接:Linux

🎯长路漫漫浩浩,万事皆有期待

上一篇博客:【Linux】Linux调试器 - gdb

文章目录

一、前言

大家可能用过 Github, Gitee 等代码托管平台。实际上这些平台都是可以通过 git 来进行管理的,而 git 本身是一个开源的、免费的 分布式版本控制工具 ,通过 git 可以快速高效地处理代码的合并,项目的管理等功能。

而 git 在团队协作开发上也是十分好用的,因为 git 支持多分支,团队成员可以将代码提交到一个仓库,从而对项目进行多人合作开发。今天我们将学习何为分布式版本控制工具。并且做到能在 LInux 上使用 git ,完成代码的提交等基本操作。

二、版本控制

Git 是一个分布式版本控制工具,但是版本控制是什么,版本控制工具又是什么,它们能干什么,优点是什么?

1、何为版本控制

版本控制是一种记录文件内容变化,以便查阅指定版本修订情况的控制系统。版本控制最大的优点就是记录了以往的版本,可以随时查阅版本记录,从而让用户能查看历史版本。

比如,论文我们应该都写过。而论文从开始写,到交上去,可能会修正很多遍。每一个文件都是一个版本,都记录着之前的文件。

而版本控制就是将这些版本记录下来,方便用户查阅之前的版本 。通过版本控制就可以更加清晰的了解各版本的变化,从而做出升级和改进,当进行团队协作时也更加方便。

2、版本控制工具

版本控制工具分为两类,集中式版本控制工具和分布式版本控制工具。

① 集中式版本控制工具

常见的集中式版本控制工具有 SVN ,CVS 等。集中式版本控制有一个特点就是 只有单一的集中管理的服务器 。在服务器中,保存着所有文件的修订版本。

在协同工作时,小组成员都会通过客户端链接到服务器,通过服务器来完成提交更新。

这种版本控制可以通过管理员来掌握小组成员的动作情况,管理权限。管理成本低,管理模式集中。

但是这种版本控制有一个致命的缺陷:服务器发生故障,小组成员就无法协同工作 。

② 分布式版本控制工具

常见的分布式版本控制工具有 Git ,Mercurial 等。

分布式版本控制工具通常有客户端和服务端。客户端提取的不是这些文件版本,而是把代码仓库完整的通过镜像的方式克隆到本地,就是 本地库

这种机制也让仓库的控制性更加好。如果一处协同工作的文件故障了,那么可以通过其他客户端的本地库进行恢复。

而分布式版本控制工具也解决了集中式版本工具的弊病 :

当服务器崩掉时,也可以进行开发,因为存在本地库,通过本地库就可以进行版本控制

在小组成员的客户端上保存着完整的项目备份,提高了安全性

而这种控制方式也提高了使用者的舒适度 :

如果用户不想要把自己的项目上传到远端,也可以将项目上传到本地,进行本地式的管理。

对于协同开发的用户,更是可以将项目上传至服务器,让服务器进行数据管理,避免数据丢失,更加安全。

三、代码托管平台

说到代码托管平台,大家耳熟能详的实际上就是 Github ,Gitee 等平台了。

Github :

Gitee :

这些代码托管平台的特点就是 继承了Git 代码仓库托管的功能,并且增加了许多个性化的功能,如代码片段分享,订阅等特色功能 。除了通过 Git 进行版本的控制,用户能在网站上直接进行操作,让用户在网站上也可以完成对版本的修改。

这样的方式更贴近于用户体验。增加了个性化功能,让代码托管平台不仅能版本控制,更作为一个协作的平台,变成一个更大的交流之地。

Github 和 Gitee 的区别:

Gitee 是国内的,Github 是国外的

Github 用户基数较多,开源项目更加丰富

Gitee 的用户大多是国人,且是中文界面更容易让人接受

Github 的服务器在国外,如果不使用加速器的话访问速度相对较慢,而Gitee 则由于服务器在国内的原因,访问速度较快

四、Linux上使用git

先用 git --version 检查一下 LIinux 下有没有安装 git :

显然是安装了的,如果没有安装的可以使用安装:

cpp 复制代码
sudo yum install -y git

1、创建仓库

紧接着到 Gitee 或 Github 上创建一个仓库,我使用的是Gitee 。

首先选择新建仓库:

然后设置仓库名、是否开源,初始化,设置模板等...

然后点击克隆,以 https 的形式复制远端仓库的链接:

2、仓库克隆和细节介绍

使用命令:

cpp 复制代码
git clone https格式网址

将远端仓库克隆到本地,输入指令后需要输入用户名和密码:

:只有私有的克隆时才需要输入用户名和密码,开源的话就不用输

然后目录下就出现了一个目录,名字就是上方创建目录时生成的路径名;进入目录,在显示一下隐藏文件,可以发现一个 ,git 的隐藏目录。

而之前我们仓库中的文件也都在这里,就比如 Readme 文件。同时也出现了一个叫做 .git 的目录。.git 实际上就是仓库,也就是本地库,git 中会将修改记录以二进制的形式保存在文件中。

使用 tree .git 查看一下目录内容:框出来的部分就是修改记录

: .git 中的内容不要改!

3、git三板斧

首先,进行一下内容拷贝,将上次写的进度条代码文件夹拷贝到当前目录下:

当内容拷贝过来之后,需要将本文件夹内所有内容提交到暂存区 :

cpp 复制代码
git add .

在使用指令查看一下暂存区状态:

cpp 复制代码
git status

下面显示了 new file ,说明我们已经将文件提交到了暂存区。

接着,将暂存区的文件提交到本地库 :

cpp 复制代码
git commit -m "日志信息"

引用为上传的日志,日志一定要认真写 ,这表明这部分代码是什么,或者新增加了什么功能

并且别人是可以看到你的日志信息的,只要你的仓库开源,别人将仓库克隆到本地后,就可以使用 git log 或 git reflog 查看到你的日志信息:

git reflog 为查看版本信息,git log 为查看版本详细信息。

:这些日志都是被保存下来的,所以在团队协作中,一定不能乱写。打马赛克的部分是邮箱,不好好写小心被领导批评(bushi)。

当第一次提交时,会遇到一个小问题:

框出来的话表明你需要设定一下自己的邮件和用户名,方便之后别人查看到你的日志后和你及时联系。

这时需要输入两行指令,就是第二个方框中的内容:

cpp 复制代码
git config --global user.email "xxx@xx.com"
gti config --global user.name "Sherry"

之后再输入 git commit -m" ",显示的有 create mode 数字 文件,就表明已经将暂存区的内容提交到了本地库,也就是 .git 目录中。

add 和 commit 的操作就是将文件保存到本地库的动作(还是在本地),它们的关系下图表示:

接下来将本地库内容推送到远端 :

cpp 复制代码
git push

输入指令后要求我们输入用户名密码,注意这里的账号是一开始克隆仓库时使用的用户名和密码。

输入后呈现这样的格式就说明推送成功了。

可以设置免密码提交,操作很简单,可以参考这篇博客

:提交时可能会出现这样的警告

这个告警的影响其实不大,只需要修改全局配置,让每次 push 的时候总是显示即可。

对于 matching 和 simple ,分别输入:

cpp 复制代码
git config --global push.default matching
git config --global push.default simple

进行完这些步骤,切换至 gitee 查看一下是否提交成功:

已经提交成功了(后面显示的时间,是把文件放到本地库的时间)

git 三板斧

git add . :将内容提交到暂存区

git commit -m "日志信息" :将内容提交到本地库,日志要好好写

git push :将本地库中的内容推送到远端仓库

总结:

今天我们学习了分布式版本控制工具------ git 。Git 无论是在平常的学习,还是日后工作的团队开发中都是极其重要的,所以之后可以在 Linux 上实操一下。接下来,我们将继续学习Linux的其他知识。希望我的文章和讲解能对大家的学习提供一些帮助。

当然,本文仍有许多不足之处,欢迎各位小伙伴们随时私信交流、批评指正!我们下期见~

相关推荐
lybugproducer19 分钟前
深入 Linux 文件系统:从数据存储到万物皆文件
linux
烦躁的大鼻嘎27 分钟前
【Linux】深入Linux多线程架构与高性能编程
linux·运维·服务器·开发语言·c++·ubuntu
羚羊角uou33 分钟前
【Linux】system V共享内存
linux·运维·服务器
林克爱塞尔达44 分钟前
Linux入门(二)
linux·运维·chrome
Hello.Reader44 分钟前
Kafka 实现从网络层到日志与位点的“全景拆解”
分布式·kafka
破烂儿1 小时前
Ubuntu Server 安装图形界面和通过Window远程桌面连接服务器(Xrdp)
linux·服务器·ubuntu
存储服务专家StorageExpert1 小时前
手搓一个 DELL EMC Unity存储系统健康检查清单
linux·运维·服务器·存储维护·emc存储
我是苏苏1 小时前
KafKa02:Kafka配置文件server.properties介绍
分布式·kafka
笑口常开xpr2 小时前
Linux 库开发入门:静态库与动态库的 2 种构建方式 + 5 个编译差异 + 3 个加载技巧,新手速看
linux·c语言·动态库·静态库
Dobby_052 小时前
【Hadoop】Yarn:Hadoop 生态的资源操作系统
大数据·hadoop·分布式·yarn