热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

读书笔记:《VersionControlWithGit》

地一章简介首先提到了VCS(VersionControlSystem)的基本功能:Althoughtheauthorsandusersofeachtoolmightdebatees

地一章 简介

首先提到了VCS(Version Control System)的基本功能:

Although the authors and users of each tool might debate esoterics, each system address the same issues: develop and maintain a repository of content, provider access to historical editions of each datium, and record all changes in a log.

其次提到了Linus对于BitKeeper的替代品的期望。其实这些期望也可以看作Git的特点:

  • Facilitate distributed development(支持分布式开发)
    也就是人们不需要随时的和中心仓库同步。人们可以独立、并行的开发,甚至在一些离线的本地环境中也不会遇到问题。

  • Scale to handle thousands of developers(可以支持上千名开发人员)

  • Perform quickly and efficiently(高效)
    相较于集中化的版本控制系统而言,Git每次只保存增量,无疑更有优势。
  • Maintain integrity and trust(保持完整和可信)
  • Enforce accountability(可靠性)
  • Immutability(不变性)
  • Atomic transactions(原子事物)
  • Support and encourage branched development(支持并鼓励分支开发)
  • Complete repositories(完整的代码库)
  • A clean internal design(干净的内部设计)
  • Be free, as in freedom(免费)

那么Git时如何满足这些需求的呢?哪些需求时我们的日常开发中也会遇到的呢?有哪些最佳实践呢?遗憾的是,这一章中并没有进一步进行阐述。

从Git-Scm的文档中我们可能找到一些提示:

  • Git直接记录快照而不是增量
  • 近乎所有的操作都是本地执行。这一点使得人们可以在离线状态下进行开发。准确的说,不只是开发,大部分的版本控制操作都可以在离线状态下完成!
  • 时刻保持完整性。这一特性是机遇SHA1加密算法对于每个对象提供数字指纹来完成的。
  • 多数操作仅添加操作。

接下来,我会带着上面的问题略过第二章(安装),直接进入第三章(开始)进行学习。

=======================================
附录一个常用的协作开发流程(参与已有项目开发):

  • 在Github上fork一个branch
  • Git clone到本地
  • 添加upstream: git remote add upstream (地址),可以通过git remote -v来查看是否添加成功。这主要是为了能够pull到其他人的change。
  • 创建新的分支:git branch branch_name。并切换到对应branch:git checkout branch_name。通过git branch可以查看当前的分支。
  • 开发
  • git add . 添加所有的change。可以通过git status来查看相关状态
  • git commit -m “message”。
  • git push origin branch_name。
  • 在github上发一个pull request
  • code review并重复开发、添加、commit、push的步骤直到被merge。

推荐阅读
  • PBO(PixelBufferObject),将像素数据存储在显存中。优点:1、快速的像素数据传递,它采用了一种叫DMA(DirectM ... [详细]
  • 本文介绍了UUID(通用唯一标识符)的概念及其在JavaScript中生成Java兼容UUID的代码实现与优化技巧。UUID是一个128位的唯一标识符,广泛应用于分布式系统中以确保唯一性。文章详细探讨了如何利用JavaScript生成符合Java标准的UUID,并提供了多种优化方法,以提高生成效率和兼容性。 ... [详细]
  • 在Maven项目中高效集成JaCoCo代码覆盖率插件,以显著提高测试质量。首先,需在项目的`pom.xml`文件中添加JaCoCo和JUnit的依赖配置,确保测试框架和覆盖率工具的无缝结合。通过这种方式,开发者不仅能够执行单元测试,还能获取详细的代码覆盖率报告,从而优化测试策略和代码质量。 ... [详细]
  • java解析json转Map前段时间在做json报文处理的时候,写了一个针对不同格式json转map的处理工具方法,总结记录如下:1、单节点单层级、单节点多层级json转mapim ... [详细]
  • 普通树(每个节点可以有任意数量的子节点)级序遍历 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 本文详细介绍了 Pentaho Kettle 中 RowMetaInterface.writeMeta 方法的使用,并提供了多个代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • JUC(三):深入解析AQS
    本文详细介绍了Java并发工具包中的核心类AQS(AbstractQueuedSynchronizer),包括其基本概念、数据结构、源码分析及核心方法的实现。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 思科IOS XE与ISE集成实现TACACS认证配置
    本文详细介绍了如何在思科IOS XE设备上配置TACACS认证,并通过ISE(Identity Services Engine)进行用户管理和授权。配置包括网络拓扑、设备设置和ISE端的具体步骤。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 2018 HDU 多校联合第五场 G题:Glad You Game(线段树优化解法)
    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6356在《Glad You Game》中,Steve 面临一个复杂的区间操作问题。该题可以通过线段树进行高效优化。具体来说,线段树能够快速处理区间更新和查询操作,从而大大提高了算法的效率。本文详细介绍了线段树的构建和维护方法,并给出了具体的代码实现,帮助读者更好地理解和应用这一数据结构。 ... [详细]
  • 本文深入探讨了 Git 与 SVN 的高效使用技巧,旨在帮助开发者轻松应对版本控制中的各种挑战。通过详细解析两种工具的核心功能与最佳实践,读者将能够更好地掌握版本管理的精髓,提高开发效率。 ... [详细]
  • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
    本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
  • OpenCV 2.4.9 源码解析:级联分类器的错误率与尺寸分析 ... [详细]
author-avatar
个信2602926933
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有