第02课: Git 在 GitHub
发布日期:2022-02-10 13:35:46 浏览次数:26 分类:技术文章

本文共 2410 字,大约阅读时间需要 8 分钟。

什么是 Git

最任性的文件系统

简单的说, 就是 Linux 的创建人 ,Linus 受够了又贵又不好用的商用版本管理系统, 然后用两个星期自己完成了一个, 又用很短的时间,将上百万行代码量的 linux 工程, 整个儿迁移到 Git 中, 然后突然间, Git 就变成了 IT 界最火最COOL 的版本管理系统了。

为什么 GitHub 选择了 Git?

因为其它 VCS 都已被很好的支持了

故事是这样的, 早期的 Rails 多人协作开发团队,在代码提交和协作时遇到了很多的麻烦. 为了解决团队之间开发协作困难的这一个问题,创始人 Scott 和其他3个程序员朋友,决定完善一个基于 Git 的代码分支管理工具,用来帮助 Rails 项目本身的开发。

然后发现, 这个临时的, 包含了开源社区三件套:

  • VCS
  • buglist
  • wiki

将原先分散的, 各自独立的平台中, 一个新特性从代码到任务/测试/bug 对应的太多分散资源, 集中在了一起;爽利太多, 干脆就将此工具, 独立发布成为了一个全新的 Git 托管平台:

GitHub

意思就是聚焦 Git 的 Hub 。

Git 的核心能力

信任

其实, Git 之前, 类似的 DVCS ~ 分布式版本管理系统已经发布了好几个了。 之前提及的 hg( Mercurial )就是。

相对传统的中央式版本仓库, DVCS 最大的不同就是, 一个项目所有代码/文档的所有版本, 并不存在一个中心仓库来集中式管理, 而是所有成员的本地仓库中都包含所有历史版本。

那问题来了, 大家怎么协同呢?

这就是 Github 要解决的问题:

  • 新人有地方发现好项目
  • 所有成员,有一个相对稳定的仓库来进行协同
  • 当然,后来 GitHub 发现并解决了更多的真实协同问题

也就是说,基于 DVCS 仓库进行版本协同时,所有参与者的信任度是相同的, 所有人可以对所有代码以及代码的所有历史版本任意访问, 并发布自己的修订。

而传统中央式 VCS 必须由管理员分配权限,才能对指定的目录以及版本进行访问。

而这种对成员的无限信任, 虽然也引发了更多问题, 但是,从根儿上解决了大家参与的动力问题, 所有人的所有行为,通过 Git 所有人都可以持续关注, 任何人的任何努力,所有人都得以客观的注意到。

同时,任何 Git 操作或是代码问题,也意味着所有参与者都能立即知道, 这同时也反向给了 Git 用户一个强烈的暗示:

可以作任何事儿但是,请保证确实知道这么作的后果并有能力承担引发的问题

这样, 解放原先管理员的维护压力的同时, 也无形中逼所有人自觉的先认真完成了 Git 的学习,才开始使用 GitHub, 这样带来的好处有很多, 最大的一个, 可能是:

GitHub 变成用心学习才能上手的项目空间从一开始就竖立了坚固的可信任印象

从而, 进一步的, 也等于对所有 GitHub 用户完成了事先的的能力检验, 大家的 GitHub 帐号简直变成了当初 gmail 帐号一般的圈内人认证特征。

GitHub 对 Git 的支持能力

full

甚至于,GitHub 后来有钱了,看不过市面儿上的 Git 桌面工具,自己开发了一个

来可视化 Git 的各种高级操作。

不过,讲真,不是 Linux 那种深厚的巨型项目, 普通的 Git 仓库,根本用不了太多复杂的 Git 操作,常用的就几个:

  • clone (一次性的)
  • st
  • ci
  • co (常常也是一次性的)
  • pu
  • add
  • …… 嗯哼, 没了

应该在仓库中嗯哼什么?

版本仓库中应该放什么?

这个问题, 太基础, 基础到几乎没人说的明白……

因为得从 VCS 中的 V 说起:

  • 什么是“版”?
    • 中国图书版本学中描述
    • “说文解字”: 判也,从片,反声
    • “说文通训定声”: 判木为片,名之为版
    • 最早是动词,后来变迁为文字载体的通称,在纸发明前,文字是记载在各种各样材质的“版”上的
  • 什么是“本”?
    • “太平御览”: 定以杀青,可缮写,上素为定本
    • 即,书之原本,
    • 一部书在内容形式上的表现形式
  • 什么是“版本”?
    • “版”,“本”合称在宋朝
    • 当初,专指雕版印本,即:刻本
    • 用雕刻好的文字的木版印刷而成的图书/本子
    • 目的在与当时社会上流行的写本,拓本等等区分
    • 1979年版“辞海”:
      • “版本”——书经过传写或是印刷而形成的各种不同本子
    • 在出版业,“版本”就是指一部图书的具体表现形式
  • 软件工程中的“版”与“本”
    • 印刷术是中国发明的,出版机制中的原理也自然的引用在软件工程中

enter image description here

VCS( Version Control System ) 是软件工程中极其重要且基础的工具, 通过 VCS 工具, 分布在全球的开发者才能和谐地共同开发。

所以,Git 仓库中必须合理的追踪应该管理的工件

否则, 只会对协同开发者告成困扰:

  • Git/GitHub 解决了协同的渠道
  • 但是,具体的协同行为是人来完成的
  • 我为人人, 人人才可能为我

例外

问题是 GitHub 并不是单纯的 geek 产品,人家是成功的商业平台!

  • 在仓库中能很好的对图片进行 img-reivew
  • 简直太魔幻了!

images-onion-view

所以, GitHub 已经对 Git 的功能拓展了很多, 但是, 一点也没有引发学习, 自然的就用起来了……

这才是没有 PM 才能开发出好产品的明证!

和合技

  • 简单的说:
    • 利用 commit-comment 界面
    • 可以欢快的组织大家进行写作的 和合技
    • 高效的在同一个界面完成文字的
    • 逐行/段/篇 讨论/改进
    • 再依赖版本, 逐层推进文字的凝练

提问

~ 是的,GitQ 不是单向灌输, 双向交流才真诚

  • version 和 reverion 有什么区别?
  • cvs 和 csv 有什么差异?
  • GitHub 中如何配置 ssh 来安全访问仓库?

欢迎大家来我的读者圈评论作答或提问交流 ~

转载地址:https://blog.csdn.net/zoomquiet/article/details/108729665 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:JS两个数组取交集filter
下一篇:第01课:Markdown 在 GitHub

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年03月01日 23时07分55秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

lotus php,LotusPhp框架目录_PHP教程 2019-04-21
java倒计时自动关闭弹窗,打开页面弹出窗口子窗口定时自动关闭 2019-04-21
mysql 常见存储过程,MYSQL存储过程 2019-04-21
php+jq+添加css,jquery如何添加css样式? 2019-04-21
matlab 函数 向量参数,Scipy integrate(quad,quadration,nquad)不能集成向量参数化函数?等效函数(MATLAB works)... 2019-04-21
arduino如何调用mysql,【 实测可用 】Arduino 直接访问 mysql 2019-04-21
php数据库结构对比 微擎,禾匠数据库对比–微擎通用各类数据库结构对比教程... 2019-04-21
mitproxy php,orion-c 2019-04-21
oracle外部表ora29913,从外部表中选择sqlplus错误:ORA-29913:执行ODCIEXTTABLEOPEN标注时出错... 2019-04-21
oracle负载均衡方案,Oracle负载均衡配置代码 2019-04-21
html语言放到数据库中,怎样把输入的文本转换成html代码存入数据库啊 2019-04-21
html描述列表在线实例,HTML的列表标签 2019-04-21
mysql 允许网络连接_MySQL 权限问题 允许所有网络的连接 2019-04-21
mysql查询服务器_MySQL查询执行 2019-04-21
oracle和mysql空字符串_Oracle中Null与空字符串' '的区别 2019-04-21
android webview静态方法,在android webview中加载静态页面 2019-04-21
Android网络期末考,Android 面试之「网络基础篇」 2019-04-21
html如何修改按钮样式,css怎么设置按钮样式? 2019-04-21
nextcloud如何填写数据库_OMV利用Docker配置nextcloud,实现个人网盘的搭建! 2019-04-21
点击定位到指定位置_使用Word书签功能轻松定位到指定位置或某个特定内容 2019-04-21