三搞乏、基本理論
目錄:工作區(qū)域、工作流程眠屎、Git分支
1.工作區(qū)域
Git本地有三個工作區(qū)域:工作目錄(Working Directory)笙纤、暫存區(qū)(Stage/Index)、資源庫(Repository或Git Directory)组力。如果再加上遠程的Git倉庫(Remote Directory)就可以分為四個工作區(qū)域省容。文件在這四個區(qū)域之間的轉(zhuǎn)換關(guān)系如下:
Git的工作區(qū)域之間的轉(zhuǎn)換關(guān)系
- Workspace:工作區(qū),就是平時存放項目代碼的地方燎字。
- Index/Stage:暫存區(qū)腥椒,用于臨時存放新的改動。事實上它只是一個文件候衍,保存到即將提交到文件列表信息笼蛛。
- Repository:倉庫區(qū)(或本地倉庫),就是安全存放數(shù)據(jù)的位置蛉鹿。這里面有提交到所有版本的數(shù)據(jù)滨砍。其中HEAD指向最新放入倉庫的版本。
- Remote:遠程倉庫妖异,托管代碼的服務(wù)器惋戏。可以簡單的認為是項目組中的一臺電腦用于遠程數(shù)據(jù)交換他膳。
本地的三個區(qū)域响逢,確切地說應(yīng)該是Git倉庫中HEAD指向的版本:
Git的倉庫中的結(jié)構(gòu)
- Directory:使用Git管理的一個目錄,也就是一個倉庫棕孙,包含工作空間和Git的管理空間舔亭。
- WorkSpace:需要通過Git進行版本控制的目錄和文件,這些目錄和文件組成了工作空間蟀俊。
- .git:存放Git管理信息的目錄钦铺,初始化倉庫的時候自動創(chuàng)建。
- Index/Stage:暫存區(qū)肢预,或者叫待提交更新區(qū)矛洞,在提交進入repo之前,可以把所有的更新放在暫存區(qū)误甚。
- Local Repo:本地倉庫缚甩,一個存放在本地的版本庫;HEAD會只是當(dāng)前的開發(fā)分支(branch)窑邦。
- Stash:隱藏擅威,是一個工作狀態(tài)保存棧,用于保存/恢復(fù)WorkSpace中的臨時狀態(tài)冈钦。
2.工作流程
①在工作目錄中添加郊丛、修改文件。
②將需要進行版本管理的文件放入暫存區(qū)域。
git add .
③將暫存區(qū)域的文件提交到Git倉庫厉熟。
git commit
因此导盅,Git管理的文件有三種狀態(tài):已修改(modified)、已暫存(staged)揍瑟、已提交(committed)白翻。
Git的工作區(qū)域之間的關(guān)系
3.Git分支
分支在Git中相對較難,分支就是科幻電影里面的平行宇宙绢片,如果兩個平行宇宙互不干擾滤馍,那對現(xiàn)在的世界也沒啥影響。不過底循,如果在某個時間點巢株,兩個平行宇宙合并了,就需要處理一些問題了熙涤。
Git分支示意圖
Git分支中的常用指令:
# 列出所有本地分支
git branch
# 列出所有遠程分支
git branch -r
# 新建一個分支阁苞,但依然停留在當(dāng)前分支
git branch [branch-name]
# 新建一個分支,并切換到該分支
git checkout -b [branch]
# 合并指定分支到當(dāng)前分支
$ git merge [branch]
# 刪除分支
$ git branch -d [branch-name]
# 刪除遠程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]
如果同一個文件在合并分支時都被修改了祠挫,則會引起沖突那槽。解決的辦法是可以修改沖突文件后重新提交。
master主分支應(yīng)該非常穩(wěn)定茸歧,用來發(fā)布新版本倦炒,一般情況下不允許在上面工作显沈。一般情況下在新建的dev分支上工作软瞎。工作完后,比如要上新發(fā)布拉讯,或者說dev分支代碼穩(wěn)定后涤浇,可以合并到主分支master上來。