## 版本、版本管理與版本管理軟件
* 版本是記錄特定對象各個可選狀態的快照
* 版本管理的任務就是對對象的歷史演變過程進行記錄和維護
* 版本控制軟件提供完備的版本管理功能,用于存儲、追蹤目錄和文件的修改歷史的工具軟件。
## 版本管理的應用場景
版本管理在很多場景都會有,隨著軟件的興起和蓬勃發展而迅速發展,成為軟件開發中協同工作的必備工具。
#### 單人工作版本管理的需求:
對一篇短文或是詩歌進行修改,改動記錄和歷史或許不是很多,但是,如果是寫一篇大的論文,類似畢業論文,從開題到最后論文提交,這中間有多少改動, 比如說寫一篇 "論Git"的論文, 往往在論文結束的時候,磁盤里有很多版不同名字的文件: 論Git, 論Git-導師修改版,論Git-提交版,論Git-提交修改版,論Git-答辯版,論Git-答辯修改版,論Git-終極版,...; 還有的命名直接是:論Git-V1,論Git-V2,... 論Git-Vn。舊的版本也有價值,不能刪除。這么多版本,作者自己也經常搞不清,以至于在論文后期把錯誤版本的論文進行了提交。而且,幸運的通過了論文答辯,有其他人請假經驗的時候,有點茫然,因為整個過程有點緊張,大部分的時間節點和過程都遺忘了。如果有版本控制軟件, 記錄整個修改過程, 并記錄一些當時的心得,這些問題就完美解決了。
#### 多人協作下版本管理的需求:
很難想象如果沒有版本管理,在軟件開發中,多人協作該如何進行。是誰提交的代碼不知道,什么時間提交的代碼不知道,多個人對同一個文件修改,總會發現改動被別人覆蓋。
## 版本管理工具的基本功能
版本管理工具基本上具有以下功能:
1. 記錄歷史
記錄文件修改的時間、提交人。
2. 版本回退
回退到某個時間點
3. 團隊協作
能處理多人同時修改的問題,不同的軟件的操作方式有一些差異。
4. 分支與合并
#### 版本管理工具的發展階段
版本管理工具的發展大致經過了四個階段:
1. 早期的rcs
2. 集中式的CVS,VSS, Perforce,SVN 多分天下
3. 再到bitkeeper分布式
4. git一支獨霸
發展的歷史圖譜如下:

- 前言
- 第1章 概念篇
- 1.1 版本控管的概念與歷史
- 1.2 Git概述
- 1.3 Git 安裝
- 1.4 工作區、暫存區和版本庫
- 1.5 本地庫與中央庫
- 1.6 Git術語匯總
- 1.7 GitHub
- 1.8 裸倉庫
- 第2章 基于本地庫的操作
- 2.1 初始化庫
- 2.2 提交代碼
- 2.3 日志查看
- 2.4 差異比較
- 2.5 提交撤銷
- 2.6 刪除文件
- 第3篇 中央庫命令及操作
- 3.1 中央庫搭建
- 3.1.1 SSH協議中央庫搭建
- 3.1.2 SSH協議中央庫搭建問題解決
- 3.2 推送遠端庫
- 3.3 沖突處理
- 第4章 進階篇
- 4.1 分支與合并
- git整合分支的兩種方式 merge 和 rebase
- 最簡單的git merge 和git rebase 區別介紹和示例演示
- git merge 合并
- git rebase 變基
- 取消merge
- 4.2 標簽
- 4.3 忽略不需要控管的文件
- 4.4 Git工作流程
- 4.5 HEAD 究竟是什么?
- 4.6 .git實現原理解密
- 4.7 代碼拉取與提交
- 4.8 查看提交記錄
- 查看前一個月提交記錄
- 4.9 git reset 和 git revert的區別和適用場景
- 第5章 命令與工具篇
- 5.1 Git常用命令一覽
- 5.2 Git命令索引
- git clone
- git init
- git checkout
- git revert
- git reset
- 5.3 Git GUI使用
- 5.4 Git 可視化工具
- 第6章 實戰篇
- 6.1 GitHub使用介紹
- 6.2 代碼覆蓋與沖突解決
- 6.3 Clone項目到非空目錄
- 6.4 檢出指定的目錄-稀疏檢出
- 6.5 單個文件的回退
- 回退到指定版本
- 提交丟失場景
- 6.6 常用命令
- 6.7 分支合并
- 最簡單最常見的Merge
- 取消單個文件的自動merge
- Excel 文件合并處理
- Pull request
- Bitbucket Pull request
- 分支合并之git merge ,git rebase
- 6.8 已控管文件去除版本控管
- 6.9 本地非空目錄與遠端庫對應
- 6.10 如何使用Gitee 控管代碼
- 6.11 提交和分支等記錄查詢
- git log 提交日志及圖形化顯示
- 6.12 Linux/Windows 免輸密碼
- 6.13 嵌套目錄的代碼控管
- 6.14 從遠端Tag新建分支并提交到遠端
- 6.15 從本地庫撤銷已經添加的文件或目錄
- 6.16 遠端庫回退
- 神鬼不知之Git遠端庫回退更改
- 6.17 merge 之后使用git checkout會導致修改丟失嗎
- 6.18 將Git遠程倉庫中的項目遷移到另一個遠程庫, So easy
- Git 切換Origin
- 第7章 常見問題及解決
- 7.1 Not a valid object name: ‘master’
- 7.2 error: Pulling is not possible because you have unmerged files.
- 7.3 SSL certificate problem
- 7.4 fatal: ambiguous argument 'HEAD^'
- 7.5 You have not concluded your merge (MERGE_HEAD exists)
- 7.6 Please commit your changes or stash them before you merge.
- 7.7 error: path 'xxx' is unmerged
- 7.8 unable to get local issuer certificate
- 7.9 github 無法取code之WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!問題解決
- 問題收集
- git clone 出現 SSL certificate problem: self signed certificate in certificate chain 問題怎么解決
- This branch is out-of-date with the base branch Merge the latest changes from main into this branch.
- 第8章 快速使用
- 快速
- 參考