第02课: Git 在 GitHub

什么是 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 桌面工具,自己开发了一个 GitHub Desktop

来可视化 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 才能开发出好产品的明证!

和合技

提问

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

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

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

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计题、程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计题、程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计题、程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
应用背景为变电站电力巡检,基于YOLO v4算法模型对常见电力巡检目标进行检测,并充分利用Ascend310提供的DVPP等硬件支持能力来完成流媒体的传输、处理等任务,并对系统性能做出一定的优化。.zip深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值