前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Linux系统编程】开源的分布式版本控制系统——git的基本使用

【Linux系统编程】开源的分布式版本控制系统——git的基本使用

作者头像
YIN_尹
发布2024-01-23 14:04:25
2450
发布2024-01-23 14:04:25
举报
文章被收录于专栏:YIN_尹的博客
这篇文章我们继续学习开发工具,今天要学的是开源的分布式版本控制系统——git
在这里插入图片描述
在这里插入图片描述

1. git的历史

Git 是一个分布式版本控制系统,它由Linus Torvalds 于2005年创建。下面是 Git 发展的主要历史里程碑:

创建中心化版本控制系统(CVS、Subversion等):

在 Git 出现之前,许多开发者使用中心化的版本控制系统(如 CVS、Subversion)来协同开发项目。这些系统将代码存储在中央服务器上,用户通过从服务器上检出代码并提交更改来工作。

Linus Torvalds 创建 Git:

2005 年,Linus Torvalds 创建了 Git。他最初的目标是用于 Linux 内核的开发,因为当时的版本控制系统对于内核这样的大型项目来说并不理想。

Git 的分布式特性:

与中心化的版本控制系统不同,Git 是分布式的。这意味着每个开发者都可以在本地拥有完整的代码仓库,并且可以在没有网络连接的情况下进行工作。开发者可以通过克隆远程仓库来获取完整的历史记录和代码版本。

Git 的速度和效率:

Git 被设计成非常快速和高效的版本控制系统。它使用了一种称为“快照”的技术,只存储文件的变化部分,而不是整个文件的副本。这使得 Git 在处理大型项目时非常高效。

Git 的分支和合并:

Git 提供了强大的分支和合并功能,使得开发者可以轻松地创建新的分支,并在不同的分支上进行独立的工作。开发者可以在合适的时候将分支合并到主线上,从而整合各种修改和功能。

Git 的开源和广泛应用:

Git 是一个开源项目,并逐渐成为开发者们的首选版本控制系统。众多的软件开发团队、开源社区以及个人开发者都在使用 Git 来管理他们的代码。

总结起来,Git 是由 Linus Torvalds 创建的分布式版本控制系统,它具有速度快、效率高、支持分支和合并等特点。通过提供强大的版本控制功能,Git 成为了广泛应用于各种软件开发项目的行业标准。

2. 什么是版本控制,怎么理解?

我们说git是一个版本控制系统,那么该自己理解版本控制这个概念呢?

版本控制(Version Control)是一种记录和管理文件或项目的不同版本的系统。它可以追踪文件的变化,并允许开发者在不同的时间点回溯、比较和恢复文件的特定版本。

举个栗子:

就好比我们在学校给老师交实验报告或者论文,你第一次交上去,老师说不行,你再修改修改;然后你把修改之后的第二个版本交上去,老师说还有一些小问题,再去修改;然后你又修改,修改之后把第三个版本交上去;老师看了看说,怎么越改越差了,再去修改;你又改了改,然后拿着第四个版本交上去,老师一看说:不行啊,时间快截止了,我看你第二次写的还差不多,要不你把第二次写的交上来吧。 这时,如果你每次都是直接修改,没有保存之前的旧版本,那你就难办了,第二个版本,这可怎么找啊; 但是,如果你每次修改之前都保持了上一次的版本,这时,不管老师想要那一次的版本,你都有,可以直接获取。

理解版本控制的重要性和好处有以下几个方面:

历史记录:

版本控制系统可以记录每个文件的修改历史,包括谁做了什么修改、何时进行的修改等。这样开发者可以轻松地查看项目的演变历程,了解每个版本的变化和改进。

回溯和恢复:

版本控制系统可以让开发者在需要时轻松回退到旧版本,恢复之前的状态。如果出现错误或问题,可以快速找到引入问题的版本,并还原到没有问题的版本。

并行开发:

使用版本控制系统,多个开发者可以并行地在同一个项目上工作,而不会互相干扰或覆盖对方的工作。每个开发者可以在自己的分支上独立工作,并在合适的时机将更改合并到主线上。

冲突解决:

当多个开发者同时修改同一文件时,版本控制系统可以自动检测并提醒冲突的存在。开发者可以通过合并(Merge)或解决冲突(Conflict Resolution)来处理这些问题。

团队协作:

版本控制系统促进团队内的协作,开发者可以共享和讨论代码修改,并进行审查和反馈。团队成员可以更好地了解彼此的工作,并确保项目的一致性和质量。

总之,版本控制是一种非常重要的工具,它提供了记录、管理和追踪文件或项目不同版本的能力。通过使用版本控制系统,开发者可以更好地组织和管理项目,提高团队的协作效率,并控制代码的质量和稳定性。

3. git的主要功能

Git 是一个功能强大的版本控制系统,具有以下几种主要功能:

版本控制:

Git 可以跟踪文件和目录的更改,并记录每次提交的历史。它可以帮助您了解文件的修改情况,包括何时进行的修改、谁进行的修改等。

分支管理:

Git 支持创建和管理多个分支。分支是独立的开发路径,您可以在不影响主线(主分支)的同时,创建和切换到其他分支进行并行开发。这对于多人协作和同时开发多个功能非常有用。

合并与冲突解决:

在 Git 中,您可以将一个分支的更改合并到另一个分支中。当两个分支同时修改同一部分代码时,可能会发生冲突。Git 提供了冲突解决的功能,允许您手动解决冲突或使用合并工具来自动解决冲突。

回滚与恢复:

Git 允许您回滚到历史提交的版本,无论是回退到之前的版本还是撤销最新的提交。这对于恢复意外删除的文件或修复错误非常有用。

远程仓库与协作:

Git 可以与远程仓库进行交互,例如 GitHub、GitLab 或 Bitbucket。您可以将本地仓库推送到远程仓库,与其他开发者共享代码,并进行团队协作。

暂存区:

Git 提供了一个暂存区(Staging Area),用于暂时存储修改的文件,然后一次性提交这些修改。这样可以精确地选择要包含在提交中的文件,为提交的内容提供更好的控制。

查看历史与比较:

Git 允许您查看提交历史记录,比较不同版本之间的差异,并查看特定文件或目录的修改历史。

除了以上功能,Git 还提供了其他一些有用的功能,例如标签管理、忽略文件、子模块等。Git 的强大和灵活性使其成为广泛使用的版本控制系统,并被众多开发者和开源项目所采用。

4. git与Gitee/GitHub的关系与区别

大家平时比较常用的代码托管平台应该就是Gitee/GitHub,那么Gitee/GitHub与git之间是什么样的一个关系呢?

Git 是一个版本控制系统,而 Gitee 和 GitHub 都是基于 Git 的在线代码托管平台。

下面是 Git、Gitee和GitHub的关系和区别:

Git: Git 是一个开源的分布式版本控制系统,用于管理项目的代码版本。它可以在本地计算机上创建和管理 Git 仓库,记录文件的修改历史,并提供分支管理、合并、回滚等功能。 Gitee: Gitee 是一个类似于 GitHub 的在线代码托管平台,在中国很受欢迎。它提供了将 Git 仓库托管在云端的服务,可以方便地与他人共享代码,并进行团队协作。Gitee 提供了 Web 界面和其他工具,使用户能够更方便地管理和使用 Git 仓库。 GitHub: GitHub 是全球最大的基于 Git 的在线代码托管平台,广泛应用于全球开源社区和企业。类似于 Gitee,GitHub 也提供了将 Git 仓库托管在云端的服务,并提供了强大的协作功能。

关系:

Gitee 和 GitHub 都是基于 Git 的在线代码托管平台,使用 Git 作为其底层的版本控制系统,因此它们完全兼容 Git,支持 Git 的所有功能。 用户可以在 Gitee 或 GitHub 上创建和管理自己的 Git 仓库,并与他人分享代码。

区别:

Gitee 和 GitHub 在地域上有一定的差异。Gitee 是为中国用户提供的服务,而 GitHub 是全球服务。 用户界面和功能方面略有不同。Gitee 在一些功能上有一些特色,如集成码云 Pages、Gitee CI/CD 等。GitHub 则更注重开源社区和全球开发者的协作。

总之,Git 是一个版本控制系统,而 Gitee 和 GitHub 是基于 Git 的在线代码托管平台。通过 Gitee 或 GitHub,您可以将 Git 仓库托管在云端,并使用其他提供的功能来实现更好的团队协作和代码管理。

5. git 的基本使用

接下来我以Gitee为例,给大家演示一下如何在Linux上使用Gitee进行代码托管。

5.1 git的安装

首先大家确认一下自己的Linux上有没有安装git,没安装的可以安装一下:

输入git --version,如果出现了版本号,就表明安装了

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

如果没有的话,安一下就行:sudo yum install -y git

5.2 创建仓库

建议大家现在Gitee上面创建远端的仓库,然后再克隆到本地

具体怎么做呢?

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

大家在自己的主页,点击+,然后点击新建仓库

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

然后出现这样的界面,我们输入仓库名称(自己起),输入对仓库的介绍。 Gitee现在创建仓库的是时候无法之间设置成开源,默认私有,不过创建好之后我们可以设置成开源(后面会说) 接着:

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

初始化仓库大家可以选一下,语言就按你自己的实际情况选择,许可证随便选一个就行了 然后设置模板

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

我们一般选择Readme文件 最后分支模型的话我们现在可以不选

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

然后点创建

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

我们的仓库就创建好了。

5.3 开源设置

那现在我们就可以把它设置成开源了

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

点击管理,往下拉

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

选择开源

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

都勾选上,点保存

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

它就变成公开了。 不过如果你创建一个空仓库啥也没提交好像不能设置成开源,仓库里面必须有点内容。

5.4 克隆到本地

那然后我们怎么把远端的仓库克隆到本地,使得我本地写的代码可以上传到gitee上进行托管呢?

首先我创建一个目录

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

比如我创建一个名为system_programming,作为我学习Linux系统编程的代码仓库

那我们怎么把远端的仓库克隆到这个目录下呢?

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

点击克隆,把Https的链接复制一下

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

然后在对应的目录下,输入git clone 链接,回车

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

然后我们在Gitee上创建的远端仓库就克隆到本地了 然后我们cd进去 会发现远端仓库里面已经有的文件在本地仓库里面就也有了

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

然后我们后面在这个目录下面写的代码就可以通过一些指令上传到Gitee上进行托管了,那怎么操作呢? 演示一下:

比如我现在把之前写的那个进度条的代码,拷贝过来:

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

但是现在这些文件实际并不在真正的git仓库里面 真正的仓库其实是这个:

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

隐藏文件里面的这个.git

5.5 如何上传到仓库并推送到远端

如果想让你的这些文件被git仓库管理,怎么做呢?

add

git add 文件名 将文件添加到暂存区(staging area) 当然直接git add .,就可以把当前目录中所有没添加到暂存区里面的文件添加进去

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

然后呢?

git commit -m "提交的内容信息或修改信息"(不要随便写) git commit 会将暂存区的文件更改提交到本地版本库。

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

但是我们看到这里报错了

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

看第一条Please tell me who you are,🆗,我们第一次提交需要进行一个身份验证

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

执行这两条命令就行了,把双引号里面的内容分别替换成自己的姓名(昵称)和邮箱 执行之后再commit

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

就可以了,此时我们就将对应的文件提交到本地的git仓库了

push

然后我要推送到远端呢?

git push:将本地版本库中的提交推送到远程仓库 需要填入用户名密码(可以配置免密码,这里就不说了),同步成功后, 刷新 Gitee/Github 页面就能看到代码改动了

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

就可以了。 不过我这里弄的不是太好,应该把proc那个目录拷过来上传的,这个里面的文件都分开了。

另外我们还可以查看提交日志:

git log

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

我们每次提交的详细信息都会在这里展示。

5.6 删除文件

那如果我们想删除某个提交的文件,怎么做呢?

比如我要把Makefile删掉

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

首先第一步 git rm 文件名:将指定的文件从工作目录和版本控制中删除。

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

再补充一个命令 git status 是一个用于查看 Git 仓库当前状态的命令。通过执行 git status,您可以了解当前工作目录中的文件状态以及与上次提交之间的差异。

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

但是此时只是在本地删除了,我想要远端也发生变化,怎么做? 再次进行commit和push

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

然后,看远端就变化了

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

就没有Makefile这个文件了 日志也可以查到相关记录

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

5.7 删除仓库

那我想删除一个仓库呢?

首先远端的删除,以Gitee为例:

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

直接在管理里面找删除仓库的操作就行了。

那本地的呢?

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

.git这个文件删除就行了

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 这篇文章我们继续学习开发工具,今天要学的是开源的分布式版本控制系统——git
  • 1. git的历史
  • 2. 什么是版本控制,怎么理解?
  • 3. git的主要功能
  • 4. git与Gitee/GitHub的关系与区别
  • 5. git 的基本使用
    • 5.1 git的安装
      • 5.2 创建仓库
        • 5.3 开源设置
          • 5.4 克隆到本地
            • 5.5 如何上传到仓库并推送到远端
              • add
              • commit
              • push
            • 5.6 删除文件
              • 5.7 删除仓库
              相关产品与服务
              代码托管
              CODING 代码托管(CODING Code Repositories,CODING-CR)是为开发者打造的云端便捷代码管理工具,旨在为更多的开发者带去便捷、高效的开发体验,全面支持 Git/SVN 代码托管,包括代码评审、分支管理、超大仓库等功能。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档