什麼是git
- 是一種版本控制系統
- 版本控制系統,一種記錄文件(文件多少不限制)內容變化,以便將來查閱特定版本修訂情況的系統。
優勢
- 分佈式文件系統;
- 分支
基本概念
- 倉庫: repository 。 包括本地倉庫、遠程倉庫
- 工作區 : 項目工作目錄
- 暫存區 : 文件索引區域
- 分支 : 每一個分支,就是一個指針。指向不同時刻的文件快照
- 文件狀態:未暫存、已暫存(未修改、已修改未提交、已修改未暫存)
常用命令
- git [cmd] --help
- git init
- git clone
- git status
- git add
- git commit
- git fetch
- git merge
- git pull = git fetch && git merge
- git push
- git tag
- git diff
- git remote
- git branch
- git checkout
git commit做了什麼事
- step1: 根據暫存區索引內容,對每個文件(header + 文件內容)進行hash值運算
- step2: 所有的hash值,構成樹對象
- step3: 構建commit對象;
- step4: 存放到版本庫(本地倉庫)。【版本庫,就是一個鍵值對數據庫. 這裏的鍵值,就是hash值】
commit 對象,數據結構:
struct Commit {
Commit* parent; // 父提交
Tree* tree; //hash值,構成的樹對象(對應樹數據結構)
char* commiter; //提交人姓名
char* email; //提交人郵件
char* msg; //提交說明信息
}
指針概念理解舉例:
指針: 中國上海市靜安區廣中西路555弄88號
git高效,就是因爲指針切換,切換過程:
git工作流程:
最後,給大家一個建議:
- 學習新知識,要有從0到1的心態,要敢於放棄已熟悉的知識,不要以舊有的知識體系思維方式來學習。