Go 语言版本管理| 青训营笔记

101 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天

本文为青训营课程笔记,配合原课程食用效果更佳哦~

课程笔记

课程目标

  1. 学习基本的 Git 命令,并了解原理,在遇到 Git 相关问题时,能自行排查并解决
  2. 了解研发流程中的基本概念和规范,学会正确的使用 Git

是什么

  • 版本控制是什么?

    • 一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统

为什么

  • 为什么需要版本控制?

    • 更好的关注变更,了解到每个版本的改动是什么,方便对改动的代码进行检查,预防事故发生;
    • 也能够随时切换到不同的版本,回滚误删误改的问题代码;

怎么做

1.1.1 本地版本控制

  • 最初的方式

    • 通过本地复制文件夹,来完成版本控制,一般可以通过不同的文件名来区分版本
  • 解决方案

    • 开发了一些本地的版本控制软件,其中最流行的是 RCS
  • 基本原理

    • 本地保存所有变更的补丁集,可以理解成就是所有的 Diff,通过这些补丁,我们可以计算出每个版本的实际的文件内容
  • 缺点

    • RCS 这种本地版本控制存在最致命的缺陷就是只能在本地使用,无法进行团队协作,因此使用的场景非常有限

1.1.2 集中版本控制

  • 代表性工具: SVN

  • 基本原理:

    • 提供一个远端服务来保存文件,所有用户的提交都提交到该服务器中
    • 增量保存每次提交的 Diff,如果提交的增量中和远端现存的文件存在冲突,则需要本地提前解决冲突
  • 优点:

    • 学习简单,更容易操作
    • 支持二进制文件,对大文件支持更友好
  • 缺点:

    • 本地不存储版本管理的概念,所有提交都只能联上服务器后才可以提交
    • 分支上的支持不够好,对于大型项目团队合作比较困难
    • 用户本地不保存所有版本的代码,如果服务端故障容易导致历史版本的丢失。

1.1.3 分布式版本控制

  • 基本原理:

    • 每个库都存有完整的提交历史,可以直接在本地进行代码提交
    • 每次提交记录的都是完整的文件快照,而不是记录增量
    • 通过 Push 等操作来完成和远端代码的同步
  • 优点:

    • 分布式开发,每个库都是完整的提交历史,支持本地提交,强调个体
    • 分支管理功能强大,方便团队合作,多人协同开发
    • 校验和机制保证完整性,一般只添加数据,很少执行删除操作,不容易导致代码丢失
  • 缺点:

    • 相对 SVN 更复杂,学习成本更高
    • 对于大文件的支持不是特别好 (git-lfs 工具可以弥补这个功能)

总结收获

通过样例与知识点结合的方式,学到了一些git使用方式;

通过样例的讲解,更了解了具体的git的详细使用;

又是收获满满的一天

引用参考

青训营官方课程视频

青训营官方课程文档