【Linux】两个故事带你使用git命令行

news/2023/5/28 6:50:52

目录

  • 一.历史故事
    • 背景
    • 经过
    • git的诞生
  • 二.git版本管理
    • 1.小故事
    • 2.理解版本管理
  • 三.git的使用
    • 1.仓库的创建
    • 2.安装git和仓库克隆
    • 3.上传代码三板斧
      • add
      • commit
      • push

github和gitee是代码的托管平台,我们上传代码或文件在其中,来管理我们的代码和不同版本软件。

在多人协作开发中,它们更是不可或缺的利器,那你们了解git吗?

github和gitee的底层逻辑来自于git,它在其中的地位举足轻重,下面是我对git的一部分了解,希望能帮到你。


博客内容:

接下来我们通过两个小故事讲解git的来源和作用,在利用gitee这个网站简绍git的一个基本功能版本管理,最后简绍如何在Linux命令行中使用git。

该篇博客主要以理解版本管理和在Linux上使用git提交文件为主。

一.历史故事

背景

​ Linux之父林纳斯·本纳第克特·托瓦兹(下文统一:托瓦兹),在1991年编写完成了0.11版也就是第一版的Linux内核, 想要更好的发展LInux这一操作系统,绝不可能依赖于托瓦兹自己,毕竟在几百万行的代码,不同类型的功能面前(驱动、磁盘、文件系统、管理、IO等等),一个人的力量就显得微不足道。

所以托瓦兹将其开源,并让全世界的工程师和黑客都看到了它的价值,使其纷纷参与进去共同开发。全世界范围的工程师各自完成擅长的模块,那他们写好后的代码该如何处理?有不少工程师直接将代码发给托瓦兹,由其来复制粘贴到合适的位置,但毕竟人数太多,要是只干这个托瓦兹每天都要在复制粘贴中度过,这显然不可以。

​ 对于这个问题,托瓦兹该怎样解决?找人来代替它?解放他的劳动力?这显然也是不可取的,既然可以将这些代码进行整合,那么说明他们本身的能力就很不错,浪费在复制粘贴上,这属是有点暴殄天物,也会增加成本。在全世界的工程师都在为开源Linux用爱发电时,属实没必要在增加这个开销。全世界范围内的聪明人,不可能被这个问题难住,他们认为需要一个管理代码的软件,由工程师自己上传代码,以此解决这个问题。

经过

​ 最初托瓦兹不是想着自己去打造这样的软件,而是去寻找现有的多人协作共同开发的软件,很幸运他找到了(这就是大神的思路,遇到问题,直接去找是否有人将问题解决了,他直接拿来用),但不幸的是,这个软件它是收费的,在大家的讨论后,决定放弃使用这款软件,对外的声明是“与开源的精神不相符”(个人认为:要花钱的东西有时在一定程度上会阻碍它自身的推广,影响它的影响力和传播速度,我们一般看一个东西,如视频、文章,当我们觉得它很不错,才会去考虑是否花钱去购买之后的内容,并在掏钱时多少还有点不大乐意)。

​ 好在托瓦兹最后找到了那个软件公司,他们的老板十分慷慨与尊重他们,告诉他,他觉得Linux社区是改变世界的社区,很尊重他们,其他人想要用这个软件需要花钱,给他们社区免费使用。就这样Linux社区使用这个软件来管理他们的代码,并取得了不错得反响。

git的诞生

​ 如果故事到这里就结束就不会有之后的git,事情的发展有时充满了戏剧性。大多数顶级得工程师都有一个通病,那就是好奇,他们好奇这个软件是怎样做的,如何运行,于是Linux社区的很多人就开始去破解这个软件。直到有一天,一个实例差不多点的工程师破解出来部分的内容,并将其发布出来,像世界宣布他的成果,这使得软件公司的老板十分恼火,他尊重他们给他们免费使用,反过来还要挖他的墙角,决定终止对该社区免费使用的权力。就这样托瓦兹一夜回到解放前,他当然也不可能在去复制粘贴代码,由奢入俭难啊!于是他花了两到三周也去开发了一个版本控制器的软件,并将其开源,取名为git,引来了许多对版本控制感兴趣的工程师,在不断发展下,形成了我们今天看到的git

二.git版本管理

git的功能不局限于版本管理,还要更丰富的分支管理、回退、项目标签等等,衍生出在公司内部使用git多人协作的情况。

  • 这里我们只介绍git的版本管理功能

1.小故事

接下来我们用一个小故事来简绍版本管理

在学校我们可能会面对老师要求做实验报告的情况,假如在我们的学校中有一个特别负责任的老师教我们Linux,在一次实验过后,让全班给他交一份相关的实验报告。

我的一个室友小a第一个做完了,拿着电子文档直接去找老师交报告,老师看后说你这哪里哪里不好,你下去在改一下,于是小a回去就在原本的报告上进行修改。第二次去找老师后,他还说不行,需要继续修改,没有办法,小a只能在去改,如此往复四五次之后,老师对小a说,这样吧,距离截至日期也没剩几天了,你直接把第一次的报告交上来就好了,小a直接傻了,实验报告早让他改的没有当初的样子,他也没有备份,只能一个人回去难受。

我是个人精,我旁观了整个事情,知道了这个老师的脾气,于是留了一万个心眼,把每次老师要修改的实验报告都留了一份,在我最后一次去交报告时,他和我说了同样的话,让我直接交第二次的报告,我没有一点的负担,在电脑上找出了报告交了上去。
在这里插入图片描述

在计算机世界里,我就是一个苦逼的程序员,我的这个操作就是版本管理,老师叫做产品经理

任何一个软件都有buge,我们需要更新,这就形成不同的版本,我们一般使用git来对这些不同的版本进行管理。

我们继续我们的故事,我自己完成了这个老师的实验报告,但是班里的其他同学就没有那么好运,我又是个热心肠的,决定帮他们管理他们的实验报告,让他们将每一次修改的报告都发给我,我进行管理,需要那个在和我要,我通过管理这些大量的实验报告,逐渐摸索出一套独特的方法能够更好的管理,随着我的名声渐渐大了起来,其他学院的学生也有实验报告需要管理,纷纷找上了我。

面对这么多的实验报告,我整体在哪里利用我的方法管理都忙不过来,此时,我充分的发挥了计算机专业的优势,我写了一个基于网络的软件,分为客户端服务端,服务端部署在自己的云服务器上,客户端下载在自己的电脑上,把我手动的工作代替了,从此在管理报告就不用找我,直接下载客户端上传即可,我们称这个版本为1.0,随着用的人越来越多,我觉得这个软件有很大的市场,需要用到的人很多,我将其取名为git,推广到全国。

推广后,我的软件成为全国知名的软件,但它的所有操作都是基于黑屏和命令行的,实在不雅观。接下来我招兵买马,对其进行修改使其网站化。上传后很多操作就可以直接在网站上进行实现,接着又开发了一个新的客户端,在这个客户端上就可以提交上传(该文不讲此内容),更方便于人们的操作。我们称这个版本为2.0

接下来的故事大家应该都知道了,2.0版本就是我们熟知的GitHubgitee。这两个网站的底层就是基于git实现的。

2.理解版本管理

通过上面的小故事,我们利用gitee更好的理解版本管理。

我们使用gitee管理文件,可以将其分为两个步骤:

  1. 在本地电脑上完成代码或文件的编写
  2. 通过软件上传到对应的仓库,系统会自动管理

每一次的上传都会有记录,哪怕对同一个文件进行修改,只要进行上传,我们就能找到它不同时期修改后的文件。

结合小故事,我们只要每次在一份实验报告中进行修改,在上传,gitee就会自动帮我们保存每次上传的同一文件的不同版本。

如下图,是我在本地,对一个文件进行修改后的三次上传,每次上传的文件都可以找到
在这里插入图片描述

  • 上图的版本号是上传后自动生成的,每次上传都会生成一个

基于这个原理,每次软件的版本的更新和管理也就好理解了,将修改好的软件代码进行上传,对其标签为新的版本号,通过不同的标签就能得到不同版本的代码

如下图,我们随意找一个开源的项目来进行观察
在这里插入图片描述

  • 上面左边的版本号就是标签,上传是自己设定的,代表对应的版本,右边是上传时自动生成的。

使用这个网站来管理我们的实验报告,每次修改后,在上传到网站,老师要那个提取那个给它发送即可。

三.git的使用

1.仓库的创建

首先我们在自己的gitee或github上创建一个仓库,我使用gitee步骤如下:
在这里插入图片描述
点击新建仓库后,会出现如下的页面

在这里插入图片描述
得到如下的仓库,其中仓库开源、删除仓库、设置管理者都在管理中,不是本文主要内容,这里不多做简绍。

在这里插入图片描述
我们已经创建好了仓库,想要在Linux上使用git我们还需要仓库的链接,将该仓库克隆到本地,如下

在这里插入图片描述

复制后即完成对gitee的操作

2.安装git和仓库克隆

先使用git --version检查git是否在Linux上安装
在这里插入图片描述
出现如上的类似显示就是已安装,如果没有安装使用下面的命令安装

sudo yum install -y git

下载后,使用如下指令进行对仓库的克隆

git clone 复制的仓库链接

在这里插入图片描述
因为我们的仓库是私有的需要输入用户名和密码,仓库开源后就不用在输入了。

克隆后,仓库即可显示在本地,下图的文件夹就是仓库

在这里插入图片描述
可以看出,我们上面创建的仓库内的文件都在这个目录下。

多出的.git目录实际上就是本地仓库,其中会以二进制的形式存储每次上传的记录

如下我们查看.git目录

注意:.git文件不要改,管都不要管它

3.上传代码三板斧

add

先找个文件,将其拷贝进入仓库中

在这里插入图片描述

此时,该文件并不叫做被添加入仓库,它只是被放入了这个文件下。

接着使用如下命令使该文件被仓库所管理,将其存入到仓库的暂存区

git add .

该指令执行完后,可以使用如下指令查看是否存入暂存区

git status

在这里插入图片描述
显示new file后跟文件名,说明此文件已被存入

commit

接下来,我们要将将当前目录所有未添加的文件,添加到本地仓库.git

在使用如下命令,对文件进行添加

git commit -m "日志"

双引号内需要填写上传文件的概述,需要认证对待,越清楚越好,每次的提交都会被记录下来,可以通过git log指令查到所有的提交日志,要是你在公司离职了,下一个程序员来接收你的工作,查看你的代码发现看不懂,去看你提交时的信息,到底是做什么的,结果也是看不懂,是要骂人的,所以你不好好写这个会被老板叫去谈话。

在这里插入图片描述
将文件提交到我们本地的.git中,一是担心本地存储出现问题,在提交过去多一层保障,二是方便定期的远端保存,在公司里让领导看,知道面前项目的进度方便整合。

如果是我们一个人开发,到这里就可以了,但现在我们不管他,我们的目的是将文件提交到本地并推送到远端,使本地和远端两个仓库保持一直。

注意: 第一次提交会出现如下的问题

在这里插入图片描述
需要我们自己设定一下自己的邮件和用户名,方便别人查看后于我们及时联系。

使用上图红色框中的两条指令,复制即可,修改后面双引号内的信息

在这里插入图片描述

add和commit是将文件暂存在本地库的操作,下面是将本地库的文件推送到远端

push

最后,在使用如下指令进行远端的推送

git push

一般在提交的时候需要输入用户名和密码

在这里插入图片描述
得到如上图所示结构说明推送成功。

在push时也可能遇到以下的警告:

在这里插入图片描述
该警告需要修改全局变量,将下面指令执行后即可

git config --global push.default matching
git config --global push.default simple

完成这三板斧,我们在看一下gitee中是否成功提交

在这里插入图片描述

总结:

  1. git add . :将内容提交至暂存区
  2. git commit -m “日志” :将内容提交到本地仓库
  3. git push :将本地仓库为推送至远端的内容,推送至远端

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

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

使用Retrofit,RxJava 2和Kotlin连接到API

如今,移动应用程序使用Web应用程序编程接口(API)与远程服务器交换数据已经非常普遍。 无论是使用Gmail API检查新电子邮件,使用Ticketmaster API搜索本地事件还是利用用户的Spotify历史记录推荐新音乐,API&#xff08…

你用过云手机吗?

这是「进击的Coder」的第 458 篇技术分享作者:崔庆才云服务器大家肯定不陌生了,有了一台云服务器,我们可以通过 ssh 命令或者远程桌面即可连接并执行相应的命令对云服务器进行控制。云服务器大多都是 Linux、Windows Server 系统,…

ajax nginx 转发 sessionid_Termux系列教程(三):手把手教你安装配置php+nginx!

大家好,这里是 「手机编程」,我是作者:舞剑,记得「关注我」今天是Termux系列第三节,我来讲讲怎么安装 PHP 与 Mysql,然后用 Termux 搭建一个网站。PHP全球有几乎95%的网站都使用 php 需要编写的&#xff0c…

scala--RPC和AKKA协议

文章目录RPC和AKKA4.1. RPC4.1.1. 基于RPC模拟DataNode和NameNode通信第一版4.1.1. 基于RPC模拟DataNode和NameNode通信第二版4.2. AKKA4.2.1. Actor4.2.1.1. Scala actor的简单使用:单项打招呼4.2.1.2. 基于case class来进行传递4.2.1.3. scala actor之间的相互通信…

从运行Docker Swarm集群中任何地方的所有容器转发日志

在本文中,我们将讨论一种从群集内的作为Docker Swarm服务创建的容器中转发日志的方法。 我们将使用ELK堆栈。 它们将从容器转发到LogStash,再从那里转发到ElasticSearch。 一旦进入数据库,它们将可以通过Kibana获得。 环境设定 我们将从创建…

Redis的基本操作和运用

Redis的基本操作和运用 一. 什么是NOSQL? NoSQL(NoSQL Not Only SQL ),意即“不仅仅是SQL”,它泛指非关系型的数据库。随着互联网2003年之后web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的交友…

移动APP质量优化框架 - Booster

热文导读| 点击标题阅读互联网寒冬下,程序员如何突围提升自己?Android 技术选型“37岁,年薪50万,一夜被裁”:伪上班,毁掉了多少中国年轻人作者:booster (项目地址见文末)链接:http…

取得Wear OS和Android对话:通过可穿戴数据层交换信息

当涉及到进行快速,简单的任务,可穿戴的应用有优势,作为一个智能手表这是正确的有你的手腕上总是会比智能手机或平板电脑,它的地方漂浮在你的包更容易。 但是,还没有完美的小工具,也没有人对智能手表的电池…

idea搭建maven项目 【转发】

idea搭建maven项目 【转发】 为了创建maven项目可是花了我时间了,网上的教程跟我的实际情况不符合,尤其是facets 、artifacts 那块。幸亏找到这篇文章没解决了我的问题,他的描述跟我的情况一模一样。这篇文章竟然来自百度经验!&am…

几行代码实现自动下单“13香”、Apple等系列产品的高并发购物系统(亲测可用)。

几行代码实现自动下单“13香”、Apple等系列产品的高并发购物系统(亲测可用)。 常用网络访问方法: 一、requests设置proxy: import requestsproxies = {"http": "http://192.10.1.10:8080", "https": "http://193.121.1.10:9080"…

祥云代新年贺岁版 自动下单系统 卡商网社区 带安装教程

介绍: 将源代码上传到虚拟机或服务器, 访问域名install / index.php并填写与数据库相关的信息以进行安装。 更新记录: 1.隐藏订单详细信息的密码字段 2.修复变电站开放佣金中未记录的单击的负数 3.祥云蓝色模板文章仅显示标题 4.禁用分类…

Linux常用命令——top命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) top 显示或管理执行中的程序 补充说明 top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可…

计算机游戏第72关,烧脑吃鸡大作战第72关通关技巧一览 第72关怎么过

将球射入球门这关怎么过?烧脑吃鸡大作战第72关怎么过?这关有,一个守门员和一个球员,玩家需要将球员身边的足球踢入守门员背后的球门中,但是直接点击球或者球员的话球都会被守门员拦下来哦,有什么方法能直接…

steam吃鸡服务器维修中,steam吃鸡服务器名称是什么quest; | 手游网游页游攻略大全...

发布时间:2015-11-13Steam版联机中怎么开服务器?你会吗?小编相信很多小伙伴表示不清楚具体操作步骤,今天小编带来"sandsou"分享的Steam版洞穴服务器搭建图文教程,我们一 ...标签:发布时间:2016-03-20Steam版联机中怎么开服务器?…

旺季到来,跨境电商卖家年末冲刺!

又是一年年末时,随着新年的到来,在年底这段时间里,对于跨境电商卖家来说,又是一个关键节点。而现在,卖家们也将迎来一年一度的旺季收官,在此过程中卖家需要做好哪些准备做好年末冲刺呢? 在许多…

吃鸡一直显示服务器维护发生了错误,吃鸡一直显示BE服务器错误怎么办 | 手游网游页游攻略大全...

发布时间:2017-03-09新手在打法思路及对枪过程中总会犯一些错误,当然最危险的是自己并没意识到,今天小编带来"洛水汤汤丶"分享的新手吃鸡常见错误与技巧分析,助大顺利 ...标签:攻略 攻略秘籍发布时间:2018-04-12绝地求生大逃杀是一…

无限恐怖大逃杀服务器链接失败,为什么吃鸡游戏买钥匙老是连接错误 | 手游网游页游攻略大全...

发布时间:2015-12-30这几天经常出毛病进不去,经常登录时提示网络连接错误,连接不上服务器,连接失败等等,这些问题相信小伙伴们都遇到过,甚至一直卡在登陆页面进不去,提示登陆失败,这可能是由于众多原因影响的,小编今天要做的 ...标签:乱斗西游攻略 乱斗西…

为什么吃鸡进不去显示服务器,为什么吃鸡进不去游戏显示服务器未正常运行 | 手游网游页游攻略大全...

发布时间:2015-11-15无人深空显示应用程序无法正常启动0xc000007b 无人深空进不去游戏解决办法.无人深空中很多玩家都出现了进不去的情况,部分玩家出现的情况都是无法正常启动的显示字样,其实这种情况也是非常好解决的,下面小编就来给大家介绍 ...标签:游…

吃鸡一直显示服务器,吃鸡一直显示服务器未连接 | 手游网游页游攻略大全

发布时间:2017-05-12怎么吃鸡?相信很多新手玩家在经过几十甚至上百小时的游戏洗礼之后,心中对于吃鸡的疑惑也是越来越大,为什么有时候明明开局不顺却最后吃鸡,而有时候明明很肥却送了快递.所以今天小编就为大家带来了玩家 ...标签:攻略 攻略秘籍发布时间…

计算机游戏手机攻略,吃鸡秘籍排名第一:如何使用稳赢技巧,你不知道的真相在此!...

吃鸡秘籍排名第一:如何使用稳赢技巧,你不知道的真相在此!2019-12-20 15:19:340点赞14收藏0评论和平精英大家都熟悉吧?和王者荣耀一样,如今量大主流游戏,可大家有没有发现每次吃鸡的时候,总是落地…