Git安裝完成之后,在不使用中央庫的狀況下,本地機器就可以用來進行代碼控管。使用`git init`命令就對將當前目錄進行控管了。這個命令會在該目錄下產生一個.git 的隱藏文件夾。
Git中的常見的概念和術語有:
* Working Directory:工作目錄、工作區
* Stage: 暫存區,緩存區
* Repository:庫, 版本庫
## 工作區
工作區就是本地工作的目錄, 就是使用使用git init初始化控管的目錄,但是不包括 .git的隱藏目錄。
## 版本庫
版本庫就是 .git 的隱藏目錄,.git 的隱藏目錄是Git用來進行版本控管的目錄, 相關的一些版本記錄以及改動都在這個目錄中。在使用中,這個目錄的大小往往比控管源碼本身要大。
## 暫存區
暫存區也叫做緩存區。 英文常見叫做Stage , 也有稱作Index的。
這是Git和SVN,Perforce等其他版本控管工具的一個比較大的不同之處。
看一張圖:

版本庫包括兩個部分:緩存區和代碼庫
* 工作區中的文件可以添加到緩存區(git add)
* 暫存區的文件可以提交到本地庫(git commit),每次提交會產生一個唯一的版本號。
* 暫存區的文件也可以撤回到工作區。(git reset HEAD – filename )
## 工作流程
1. 初始之后,工作區、暫存區和本地庫的內容是相同的
2. 工作區改動后,就與暫存區和本地庫不一致了,Git知道這些文件被改過,將文件設置為modified(Unstaged files)
3. 執行git add后,會將這些文件加入緩存區。但是與本地庫還是不一樣
4. 執行git commit后,將暫存區內容提交到本地庫。提交后三者又保持了一致。
## 備注
* State的暫存區和git stash的暫存的位置是不一樣的
https://img-blog.csdnimg.cn/img_convert/287e457d265cfd202e57179c2d8f2845.png
- 前言
- 第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章 快速使用
- 快速
- 參考