Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

版本控制

复习

  • 从算法到软件:软件需要长期维护
  • 单元测试:修改不应破坏已有功能
  • 文件:数据可以长期保存

TL;DR

  • 版本控制保存代码变化的历史
  • 它让你可以随时回到任意一个过去的状态
  • 分支让你安全地尝试修改
  • 它是多人协作的基础

正文

  软件会被反复修改。这就带来一个问题:改了之后要是改坏了,怎么退回去?多个人同时改,怎么不打架?

  解决这些问题的工具,叫版本控制(version control)。

给代码保存历史

  版本控制最基本的作用,是给代码的每一次变化留个记录。你可以把它想成一个“无限撤销”的存档系统:

  • 每次修改,提交一次,形成一份历史记录
  • 任何时候,都能查看“某文件昨天长什么样”“这行是谁、什么时候改的”
  • 出了问题,可以回到任意一个过去的版本

  有了它,“改坏了回不去”这个噩梦就消失了。每一次修改都是安全的,因为随时可以退回。

分支:安全的试验田

  版本控制还有个很强大的能力:分支(branch)。

  分支让你从主线“岔”出一条独立的线路,在上面大胆改动,完全不影响主线。改得满意,就把它合并回去;改得不满意,直接丢掉,主线毫发无损。

  这让“尝试一个不确定的想法”变得毫无压力:反正搞砸了也不影响别人。先在一个隔离的副本上大胆试,成功了再合入——又一次是“隔离变化”的思路。

协作的基础

  版本控制还解决了多人协作的核心难题:

  • 谁改了什么:每次提交都带着作者与说明
  • 冲突怎么解:两人改了同一处,工具会提示并协助合并
  • 如何并行:各人在自己的分支上工作,最后统一合入

  可以说,现代软件开发,没有版本控制是无法想象的。 它保存的不只是代码,更是整个团队协作的“历史与秩序”。

思考题 1

  版本控制解决了什么问题?

思考题 2

  分支为什么能让修改更安全?

小结

知识点

  • 版本控制保存代码的变更历史
  • 可查看历史、追溯责任、回退版本
  • 分支提供隔离的试验空间
  • 支持多人协作:记录、合并与冲突处理

参考资料

  1. Wikipedia(zh):版本控制:记录与管理文件的变更历史
  2. Wikipedia(zh):分支 (版本控制):从主线分离出的独立开发线

思考题答案(仅供参考)

思考题 1

  它保存代码每次变更的历史,让你能查看过去的状态、追溯某行改动的来源、在出问题时回退到旧版本,并为多人协作提供记录、合并与冲突处理的基础。

思考题 2

  因为分支是一条独立的开发线,在其上所做的修改不会影响主线。你可以在分支上大胆尝试,成功就合并、失败就丢弃,主线始终不受牵连,因此修改更安全。

协议

  本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

封面图

设计师 | 南国微雪