【Linux体系】—— 版本控制器Git

[复制链接]
发表于 2025-11-1 20:43:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
1 怎样明白版本控制

  在明白版本控制之前,我们先来举个简朴的例子来明白
  
1.1 第一阶段

场景如下:
  学校老师要我们要上交 C语言 的实验陈诉。性子比力急的张三急遽把实验陈诉写完就上交了,老师看到非常不满足,让张三归去修改;修改完后张三再提交,老师照旧不满足,云云反复四五次后,老师说:“算了算了,你看你改的都是啥啊,你照旧交第一版的上来吧。” 张三一听就傻眼了,由于他根本就没有保存第一个版本的陈诉。
  这时,优等生李四也写完实验陈诉去上交,老师同样不满足,让李四归去修改。李四回到宿舍,看到一脸哀愁的张三,想:“万一老师末了也要我的第一版陈诉怎么办?我要把每次修改前的实验陈诉生存一份”。因此李四将实验陈诉备份成 v1 后再做修改。云云修改了好频频,不绝修改到 v5 版本后老师依然不满足,末了老师说:“李四,你照旧把你的第一版陈诉交上来把。”,李四一听一脸不慌,由于它对每一个版本都做了备份,因此拿出 v1 版本的实验陈诉就交上去了。
  
  李四对每一个版本都举行了备份的工作,就是版本控制!
  既然可以把实验陈诉多版本控制起来,那我们也可以把我们代码多版本控制起来。
  我们为什么要举行版本控制?实在就是为了应对善变的甲方。
  
  上述例子中,老师就相称于产物司理大概项目司理,张三李四相称于步调员。我们步调员本身写的代码经常会被别人提各种各样的要求而改来改去。我们把李四从 v5 版本回到 v1 版本的过程称为 回滚/回退 。版本控制重要是为了我们可以随时举行回退。
  
1.2 第二阶段

  让我们进入第二阶段的故事。
  李四在举行版本控制时,是本身手动 ctrl + c / ctrl + v 举行控制的。李四以为本身做太贫苦,便写了一个工具来自动化完成版本的备份回退等工作,而这个工具就叫做版本控制器。
  李四是一个善良的人,他看到学院这么多同砚都要受到老师的折磨,便通过校园墙告知各人可以免费帮各人举行版本控制。于是,王五、赵六等人就去找李四帮助,李四就用版本控制器给他们做了版本控制,并给每个人在D盘上创建了对应的文件夹,将每个人的版本放在对应的文件夹中维护起来
   

    我们把给王五、赵六等人创建的文件夹叫做堆栈!以是我们寻常说的堆栈本质就是文件夹
  
1.3 第三阶段

  随着越来越多人来找李四举行版本控制,李四想:“不光仅是这个C语言的老师,我们学校肯定尚有其他老师这么恶心;不光仅我们学校,天下其他学校肯定也有如许的老师,那又有多少门生受此煎熬。”于是,李四想做些什么,来改变天下。
  李四想:可不可让天下上的任何人都成为李四呢?如许每个同砚都可以本身自动化的把本身的实验陈诉举行版本控制。
  李四开始动手了。此前全部人的实验陈诉都在李四的电脑 D盘 存着,只有李四能访问,因此李四花点钱买了一个云服务器,将各人的实验陈诉都放在了云服务器上,如许各人都能访问了。
  李四又做了一个软件,这个软件相称于客户端,这个客户端可以获取当前用户的实验陈诉的目次,方便查察版本、下载和上传等。
  但是李四又想,万一这个人没网呢?那不是什么都做不了?李四又想了一个办法。
  李四又开发了一个应用步调,该应用步调可以在当前的Windows账号中,在指定的目次下新建一个堆栈,并将实验陈诉添加到该指定堆栈中,并可以获取当地堆栈的任何版本。李四将这个应用步调定名为git
  如许全部不会本身举行版本控制的同砚就不消找李四了,而且纵然没有网也没有关系。只必要下载李四开发的应用步调,将本身的陈诉给这个应用步调就可以自动在当地举行版本控制了
  我们将每个人本身新建的文件夹称为当地堆栈!而资助每个人
   

    
1.4 第四阶段

  这时,李四又想:起首要是电脑坏掉了怎么办,那当地堆栈不就没了?内里的各个版本的实验陈诉也就丢失了。即怎样掩护数据安全。如果仅仅是在当地举行版本控制显着不能满足以上要求。
  这时,李四之前买的云服务器就有用了。颠末李四的积极,该堆栈具备以下功能:运行每一个用户将本身的当地堆栈 push 到该云服务器对应平台上,因此平台上会有每个人的当地堆栈的备份,我们将云服务器中的堆栈叫做远端堆栈。远端堆栈的内容和当地堆栈的内容是完全一样的
  如今,新需求又来了:大概有些用户必要创建差别的堆栈,来分别管理C语言实验陈诉,物理实验陈诉,化学实验陈诉等等。说白了就是每个人必要创建差别的文件夹,每一个文件夹管理差别学科的实验陈诉
  那用户可不可以通过客户端,将全部的堆栈都推送到远端?
  于是,云服务器必要举行用户身份辨认,即登录注册。如许每个用户就可以将本身的多个当地堆栈推送到本身远端服务器的账号下。
  李四又想:一个用户如果直接在远端堆栈举行版本控制,那远端和当地两个堆栈内容不就有差别了吗。李四又想点子,能不能让 git 在客户端和服务器两头都能跑,即在 windows 和 Linux 下都能跑。我们说的两头同步,就是让客户端和服务器下的两个 git 相互举行同步,也就是说这个 git 便是一个客户端又是一个服务器。
  厥后,李四将这个云服务器平台定名为gitee/github。
  终极的结论是:git 是一个版本控制器,gitee/github 是一个基于 git 的网站平台
   

    
  
2 Linux 上 git 利用

2.1 创建堆栈并克隆到当地

   

  

  

  
  

    
  指令:git clone 堆栈链接
   

  注:如没有下载「git」可输入指令:sudo apt install -y git / sudo yum install -y git
  
   

    堆栈 test 中,有一个 .git 目次,严格意义上讲真正的堆栈是这个 .git ,我们将.git 称为隐蔽的当地堆栈。
  .git中包罗着我们全部的修改记录。未来我们将本身的代码提交了,它会将我们各种对应的版本 v1、v2 等的具体修改数据都会生存在 .git 的特定目次下。
  前面我们举例子时,李四是直接举行拷贝的,而 git 并不是如许做的。
  git 举行版本控制时,不必要记录稳定的,只会记录厘革的部门。我们对代码的相干利用无非就是增编削,git 只需举行相应记录即可
  比方 100 行代码,我们删除了第 10 行,git 只必要记录 “删除第10” 行这个字符串即可,未来必要举行回退,只需将这第 10 行代码反向添加即可。
  
2.2 git 的提交(三板斧)

  我们先在当地堆栈创建一份代码
   

    
  如今,我们在当地堆栈创建了 test.c,那 test.c 当前有没有在我的堆栈里被管理起来呢?

  并没有。
  我们通常至将 .git 称作堆栈,而当前的目次称为工作区。此时的 test.c 在工作区中,即只在本身的 Linux 中存在
  
2.2.1 add

  将test.c添加到当地堆栈
     利用指令:git add 文件名 或 git add .
    「.」 体现将当前陌生文件全部添加至堆栈中
  当 add 后,test.c 也并没有真正添加到当地堆栈,而是添加到了 .git 的一个暂存区中。
  暂存区有什么用呢?暂存区允很多次添加,我们可以多次 add 将代码放入暂存区,后一次性提交到当地堆栈。而且暂存区的数据,如果不想提交了是可以规复的
   

    
  但我怎么知道如今的 test.c 是什么状态呢?我们可以通过 status 指令来看到我们当前对应的状态
   指令:git status
    

    
2.2.2 commit

  将暂存区的文件提交到当地堆栈:
   利用指令:git commit -m “日记信息”
    
注:输入此指令后,如果你是第一次输入,体系大概会让你输入邮箱和用户名暗码。这时体系会将指令的格式给你体现出来,你只必要将格式中引号内的内容改成你的本身的邮箱或用户有即可!
   

  注:日记肯定不要乱写,必须写清楚本次提交焦点做的工作是什么。每次提交的日记信息 git 全都会记录下来
  
   查察日记指令:git log
   

    口试官只要 git log 一下,你每一次提交的信息都会出如今口试官眼前。以是日记不能乱写
  做完 add 和 commit,此时我们的代码已经在当地堆栈中管理起来了,下一步就是将代码推送至远端
  
2.2.3 push

  第三步:将当地堆栈推送至远端
   输入指令:git push
   

    
  自此,我们就将 Linux 端当地所对应的 test.c 推送至远端了
   

    
注:git 版本管理,只举行管理元文件及只管理 .h、.c、.cpp。提交其他后缀的文件无法提交,由于 .gitignore 文件会自动帮我们根据文件后缀名举行文件过滤。出如今 .gitignore 文件中的后缀都是无法提交的,我们也可以本身修该 .gitignore 文件来过滤不想提交的文件
   

  

    
2.3 多平台利用

  如今,我在 windows 体系中,将刚刚的远端 test 堆栈拉下来,并对 test.c 代码举行修改,末了再将修改后的代码提交到远端堆栈。(在 windows 中的利用这里就不演示了)
  如今有个题目:windows 体系的用户已经将代码修改了并提交上远端堆栈了,可 Linux 体系的用户并不知道,继承在修改 test.c,继承利用三板斧上传
  此时就会报错
   

    此时必要将远端堆栈和当地堆栈做一次同步
  
   输入指令:git pull
    这时,体系就会自动将刚刚 windows 步调员所做的修改同步到你的当地
   

    我们再 push 就提交乐成了(刚刚我们已经 commit 了,此时不消再 commit)
   

  
  
  同理,此时 Linux 步调员修改了代码,windows 步调员并不知道,在旧版本上修改代码,上传到当地没有题目,但是上传到远端也是会报错的 。
  此时 windows 的本次堆栈相比与远端堆栈已经不是最新的了,这时 windows 步调员就必要将当地堆栈与远端堆栈同步。同样是 pull,然后再 push
   

    小结:远端堆栈,相比于任何人都是最新的
  以是为什么要辩论呢?辩论是提示当地用户和远端堆栈举行同步了
  
  
  
  

  好啦,本期关于编译器 gcc/g++ 就先容到这里啦,盼望本期博客能对你有所资助。同时,如果有错误的地方请多多指正,让我们在 Linux 的学习路上一起进步!
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表