Git 分為三部分:
- 工作區(qū):就是你在電腦里能看到的目錄容为。
- 暫存區(qū):英文叫stage, 或index陕赃。一般存放在 ".git目錄下" 下的index文件(.git/index)中,所以我們把暫存區(qū)有時也叫作索引(index)洛二。
- 版本庫:工作區(qū)有一個隱藏目錄.git撬码,這個不算工作區(qū)膘壶,而是Git的版本庫。
如下圖所示為以下三者的關系:
HEAD
HEAD 是當前分支引用的指針剂邮,它總是指向該分支上的最后一次提交摇幻。 這表示 HEAD 將是下一次提交的父結點。 通常,理解 HEAD 的最簡方式绰姻,就是將它看做 你的上一次提交 的快照枉侧。
Git --reset 與 Git --revert 的作用
- 文件從暫存區(qū)回退到工作區(qū)
- 版本回退
假設我們修改了本地工作目錄的某個文件,然后使用 git add命令提交到緩存區(qū)狂芋,并使用commit提交到HEAD中榨馁,這時我們發(fā)現(xiàn)修改錯了,想要回退版本帜矾,就要使用的Git reset命令翼虫。
Git --reset soft XXX
該命令不改變工作區(qū)和緩存區(qū),只移動 HEAD 到指定 commit屡萤。如下圖所示:
HEAD~ :HEAD的父節(jié)點
Git --reset mixed XXX
該命令只改變緩存區(qū)死陆,不改變工作區(qū)招拙。這是默認參數,通常用于撤銷git add翔曲,相當于回滾到所有 git add 和 git commit 的命令執(zhí)行之前迫像。
Git --reset hard XXX
該命令改變工作區(qū)和暫存區(qū)到指定 commit。該參數等同于重置瞳遍,可能會引起數據損失闻妓。執(zhí)行該命令相當于撤銷了最后的提交、git add 和 git commit 命令以及工作目錄中的所有工作掠械。如下圖所示:
Git --revert XXX
git revert命令用于撤銷commit由缆,用一次新的commit來回滾之前的commit。