## 本地庫與中央庫
Git在本地機器就可以進行版本控管的功能, 但Git更強大之處就是分布式。像傳統的集中式版本控管工具一樣:
* 在遠端服務器上安裝一個Git版本庫作為中央版本庫(也稱為遠端庫,或是服務端)
* 本地庫的改動可以集中的匯總到中央庫。即保證了代碼的穩定安全,也實現了協同開發。中央庫的一般基于Linux系統搭建。 架構如下:

## 中央庫的管理
如果項目比較多,或者權限設置較復雜的狀況下, 一般會借助一些管理工具對中央庫進行管理。為了管理方便,大部分的管理工具基于Web進行管理。像:
* Gitblit, http://www.gitblit.com/ . 開源,使用Java開發的。一般是小型的團隊使用。
* bitbucket,原名Stash, https://bitbucket.org/. 有企業版,也有免費版(5人以下免費,待考)。
如果缺少服務器資源,或者覺得自己搭建中央服務器比較麻煩的話, 現在網絡上有很多在線的中央庫,注冊一個帳號就可以了, bitbucket就有提供在線版。另外比較知名的還有Github, Gitlab。Gttlab也有提供自行安裝的軟件。
* GitHub https://github.com/
* GitLab: https://gitlab.com/
* BitBucket: https://bitbucket.org/
* Gitee: https://gitee.com/
## 目錄控管的初始化
#### 使用`git init `命令可以對目錄添加版本管理。
* `git init` 會把當前目錄進行版本管理, 會產生一個.git目錄。并會把當前目錄的文件作為工作區文件。
* `git init –bare` 創建的是一個空目錄, 也會產生一個.git目錄,但是沒有工作用的文件。一般用作服務端庫的初始化。目錄名以.git結尾。這個目錄也叫裸倉庫。
需要注意:
-使用 git init –bare創建的庫,不會建立master的Branch。
-初次clone一個裸倉庫的話, 使用git branch是找不到任何branch的(遠程和本地的都沒有,包括master).
#### 使用`git clone`從其他倉庫克隆,包含了工作目錄。
git clone會自動和遠程倉庫建立聯系。
除了git clone之外,如果是一個已經初始化的目錄, 也可以通過git remote命令和其他的遠程倉庫建立聯系。進行代碼的檢出和Push.
- 前言
- 第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章 快速使用
- 快速
- 參考