地一章 簡介
首先提到了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。