Git有四個(gè)工作區(qū)域:
(圖片來(lái)源于網(wǎng)絡(luò),圖侵刪)
1)workspace:工作區(qū)啄栓,在本地電腦代碼存在路徑下的目錄娄帖,本地IDE直接編輯的代碼就存放在工作區(qū)。
2)Index / Stage:暫存區(qū)昙楚,.git/index文件近速,保存即將提交的文件列表信息,又叫索引堪旧。
3)Repository:版本庫(kù)削葱,.git目錄,.git/HEAD文件指針指向當(dāng)前工作的分支淳梦。
4)Remote:遠(yuǎn)程倉(cāng)析砸,托管代碼的服務(wù)器。
git文件的四種狀態(tài)
(圖片來(lái)源于網(wǎng)絡(luò)爆袍,圖侵刪)
版本控制就是文件的版本控制首繁,Git不關(guān)心文件的兩個(gè)版本之間的具體差異,只關(guān)心文件的整體是否有改變陨囊,若有改變則在添加時(shí)(不是等到提交時(shí))就會(huì)生成新的快照弦疮,而判斷文件整體是否改變的方法就是用SHA-1算法計(jì)算文件的校驗(yàn)和。
1)Untracked:未跟蹤蜘醋,該文件存在于工作區(qū)中未進(jìn)入版本庫(kù)胁塞,不參與版本控制。
2)Unmodify:文件已入版本庫(kù)压语,并且沒(méi)有修改過(guò)啸罢,即工作區(qū)的文件與版本庫(kù)的文件快照一致。
3)Modified:文件在版本庫(kù)无蜂,工作區(qū)的文件被修改過(guò)伺糠,即工作區(qū)的文件與版本庫(kù)的文件快照不一致。
4)Staged:暫存狀態(tài)斥季。
文件區(qū)文件的操作
1训桶、工作區(qū)<—>暫存區(qū)
# 添加文件或者目錄到暫存區(qū)
git add [filename] 或 git add [dir] 或 git add .
# 刪除暫存區(qū)的文件累驮,同時(shí)工作區(qū)也不需要這個(gè)文件
git rm [filename]
# 刪除暫存區(qū)的文件,但是工作區(qū)仍需要這個(gè)文件
git rm --cached [filename]
# 用暫存區(qū)的文件覆蓋工作區(qū)的文件舵揭,工作區(qū)未添加到暫存區(qū)的改動(dòng)會(huì)清除
git checkout [filename] 或 git checkout .
# 用當(dāng)前指向分支覆蓋工作區(qū)和暫存區(qū)的改動(dòng)
git checkout HEAD [filename] 或 git checkout HEAD .
2谤专、工作區(qū)<—>暫存區(qū)<—>版本庫(kù)
# 將暫存區(qū)的內(nèi)容提交到版本庫(kù)
git commit -m "description"
# 移除錯(cuò)誤的添加到暫存區(qū)的文件,工作區(qū)不受影響
git reset HEAD [filename]
# 暫存區(qū)和版本庫(kù)去掉上一次的提交(回退到add之前的狀態(tài))
git reset HEAD^
# 暫存區(qū)和版本庫(kù)去掉上一次的提交(回退到add之后午绳,commit之前的狀態(tài))
git reset --soft HEAD^