Git reset
1. 文件從暫存區(qū)回退到工作區(qū) 2. 版本回退
1.1 git reset HEAD filename :回退文件,將文件從暫存區(qū)回退到工作區(qū) //也可以使用 git reset filename
1.2 git reset HEAD^:回退版本,一個(gè)^表示一個(gè)版本,可以多個(gè),另外也可以使用 git reset HEAD~n這種形式。
如果HEAD指針指向的是master分支,那么HEAD還可以換成master,如果知道特定的commit-id,那么還可以直接使用 git reset commit-id如果不加參數(shù),實(shí)際上使用的是默認(rèn)的參數(shù)mixed,
我們可以使用git log -3來(lái)查看最近三次的提交,形如 git log -n ,n就是想要輸出的個(gè)數(shù),可以看到commit-id,author,date等信息
下面介紹三種參數(shù):
(1) soft 參數(shù):git reset --soft HEAD~1意為將版本庫(kù)軟回退1個(gè)版本,所謂軟回退表示將本地版本庫(kù)的頭指針全部重置到指定版本,且將這次提交之后的所有變更都移動(dòng)到暫存區(qū)
(2) 默認(rèn)的mixed參數(shù):git reset HEAD~1意為將版本庫(kù)回退1個(gè)版本,將本地版本庫(kù)的頭指針全部重置到指定版本,且會(huì)重置暫存區(qū),即這次提交之后的所有變更都移動(dòng)到未暫存階段
(3) hard參數(shù):git reset --hard HEAD~1意為將版本庫(kù)回退1個(gè)版本,但是不僅僅是將本地版本庫(kù)的頭指針全部重置到指定版本,也會(huì)重置暫存區(qū),并且會(huì)將工作區(qū)代碼也回退到這個(gè)版本
了解這三個(gè)參數(shù)已足夠我們?nèi)粘i_發(fā)使用了,** 注意soft參數(shù)與默認(rèn)參數(shù)都不會(huì)修改工作區(qū)代碼,只有hard參數(shù)才會(huì)修改工作區(qū)代碼。**
1.3 git reset配合 git commit追加提交
什么時(shí)候會(huì)用到追加提交,追加提交有什么優(yōu)點(diǎn)?
(1) 對(duì)未merge的版本庫(kù)中的提交不滿意,希望修改其中的某些信息,如代碼,如提交描述等,可以使用git commit --amend進(jìn)行追加提交,優(yōu)點(diǎn)是不會(huì)產(chǎn)生新的commit-id
(2) 修改方法:如果想修改的不是最新一版的提交,那么可以通過(guò)git reset --hard HEAD~n將版本回退到需要的那版,如果想修改代碼,那么直接在工作區(qū)進(jìn)行代碼修改,
修改完之后git add到暫存區(qū)而不必再git pull,而如果是修改其他信息,那么可以直接使用git commit --amend進(jìn)行追加提交,git commit --amend命令會(huì)打開一個(gè)編輯器,可以修改其中的信息,
如果修改了代碼而不修改其他信息,則直接 Ctrl + X離開編輯器,再git push推送到遠(yuǎn)程服務(wù)器,如果也修改了其他信息,那么需要先使用Ctrl + M寫入信息,再Ctrl + X離開編輯器,再推送。
1.4 查看幫助
git reset -h | git reset --help