Git緩沖區(qū)理解:`index`,`add`和`reset`,`staged`和`unstaged`

在git里面,有一個(gè)叫index的區(qū)域,你把東西加到那里叫add, 把東西再從哪里撤回來叫reset;已經(jīng)在里面的我們形容它是staged,還沒有加進(jìn)去的我們形容它是unstaged。

其實(shí)index區(qū)就是一個(gè)純粹的緩沖區(qū),也叫staging area,是正式提交之前給我們的一個(gè)緩沖,還有猶豫的余地。因?yàn)橐坏┱絚ommit提交了,你所有還沒解決的愚蠢的傻事都會公開,即使能覆蓋能撤銷,但還是掩藏不了歷史。

自己做的話無所謂其實(shí),但是如果是團(tuán)隊(duì)合作的話,每次commit都是一次公開。
其實(shí)形容的話,就相當(dāng)于老板讓你做個(gè)項(xiàng)目,你肯定不可能做了一點(diǎn)東西就跑到老板辦公室去送一趟文件,應(yīng)該會先把做好的放在桌子的上那個(gè)小文件架上。然后那個(gè)文件架就叫index。

參考:Git 基礎(chǔ) - 撤消操作

撤銷add

# 指定文件
$ git reset HEAD file.txt

# 全部撤銷
$ git reset HEAD .

撤銷修改

# 指定文件
$ git checkout -- file.txt

# 全部撤銷
$ git checkout -- .

刪除commit

一旦commit,就不能撤銷!會永遠(yuǎn)留在歷史里面。

修改commit

一般流程如下:

$ git commit -m '首次提交'

$ git add forgotten_file
$ git commit --amend

恢復(fù)某個(gè)文件到以前版本

# 用git log得知某個(gè)版本SHA后,恢復(fù)readme.md這個(gè)文件
$ git reset <SHA> readme.md

# 切換到該版本
$ git checkout readme.md

# 把變動提交
$ git add . && git commit
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容