# 為什么要使用版本控制系統?
在開發項目中使用版本控制系統有很多好處。本章節將向你介紹其中的一些細節。
## 協同合作
試想一下,如果沒有版本控制系統,當你需要處理那些共享文件夾中的文件時,你必須告知辦公室里的所有人,你正在對哪些文件進行編輯;與此同時,其他人必須要避免與操作相同的文件。這是一個不現實和完全錯誤的流程。當你花了很長時間完成你的編輯后,可能這些文件早已經被團隊里的其他開發成員修改或者刪除了。
如果使用了版本控制系統,每一個團隊成員都可以在任何時間對任何文件毫無顧慮的進行修改,版本控制系統可以把之后所有的改動合并成一個共同的版本,不論是一個文件還是整個項目。這個共同的中心平臺就是我們的版本控制系統。
使用版本控制還有更多優點,這就要取決于你自己或者你的開發團隊了。
## 版本存儲(正確地)
經常性地保存項目的改動是一個非常重要的習慣。但是如果沒有版本控制系統這個操作將是非常困難的,并且非常容易出錯的:
* 你到底改動了什么?僅僅是針對一些特定文件的改動還是整個項目?首先你必須及時并小心地審查整個項目的每一個可能的改動細節,然后你需要付出大量且并不必要的時間來整理它。
* 你如何命名這些版本?如果你是一個思維很有條理的人,你也許會定義一個比較容易理解的通用命名規則(比如這樣 “acme-inc-redesign-2013-11-12-v23”)。然而一旦涉及到一個多樣性的改變(比如:在一次版本改動中,一些改動了標題區而另一些卻沒有被改動它),僅僅通過名字是很難追蹤和判斷這些改動的。
* 最重要的問題可能就是你如何知道在第一個版本和第二個版本之間到底進行了哪些改動?只有很少人會真正地去花時間來仔細記錄和觀察每一個重要的變化,例如在項目文件夾的每一個README文件。
每一個版本控制系統僅僅對應一個項目。因此,在你的本地只存在一個版本,那就是這個項目的當前工作版本。除此之外,而其它所有之前的版本和改動都已經被有序地存儲在版本控制系統中了。當你需要時,你可以隨時來查看之前的任何一個版本,而且還可以得到整個項目的快照。
## 恢復之前的版本
要把一些文件恢復到上次改動之前的版本(甚至整個項目恢復到之前的版本)。這可能意味著你發現了一些嚴重的問題!如果你確定那些改動是錯誤的或者是沒有必要的,那輕松的點幾下你就可以簡單地撤銷它。在項目的每一個重要階段,認識和正確地使用撤銷這個功能會讓你的工作變得非常輕松。
## 了解發生了什么
每當你提交一次對項目新的改動時,你的版本管理系統會要求你添加一個對這次改動的簡短描述。除此之外(如果是一個代碼或者文本文件),你還可以看到一個改動前和改動后的內容的詳細對照。這樣也可以幫助你很好地了解版本與版本之間的發展關系。
## 備份
備份是一個分布式版本控制系統(例如 Git)提供的非常好的附帶功能。每一個團隊成員都會在他的本地有一個完整的項目副本,包括整個項目的歷史記錄。如果你所依賴的服務器宕機了,或者是你的存儲硬盤壞,所有你需要的恢復文件都可以在另外的團隊成員的 Git 本地倉庫中得到。
- Learn Version Control with Git 中文版
- 前言
- Part 1 - 基礎知識
- 什么是版本控制?
- 為什么要使用版本控制系統?
- 準備工作
- 版本控制的基本工作流程
- 從一個未被納入版本控制的項目開始
- 從一個已被納入版本控制的項目開始
- 工作在你的項目上
- Part 2 - 分支與合并
- 分支可以改變你的生命
- 在分支上工作
- 暫時保存更改
- 切換一個本地分支
- 合并改動
- 分支的工作流程
- Part 3 - 遠程倉庫
- 關于遠程倉庫
- 連接一個遠程倉庫
- 查看遠程數據
- 整合遠程的改動
- 發布一個本地分支
- 刪除分支
- Part 4 - 高級應用
- 撤銷操作
- 用 diff 來檢查改動
- 處理合并沖突
- Rebase 代替合并
- 子模塊
- git-flow 的工作流程
- 使用 SSH 公鑰驗證
- Part 5 - 工具與服務
- 桌面應用程序
- 比較和整合工具
- 代碼托管服務
- 更多學習資源
- 附錄
- 版本控制的最佳實踐
- 命令 101
- 從 Subversion 過渡到 Git
- 為什么選擇 Git