git命令:reset和revert的區別

區別:

reset:回退到某一個歷史版本;(回滾某個commit)

revert:重做某一個歷史版本(回滾某個 commit)

假如有三個提交,A-->B-->C(head-->master):

1、reset B變爲:A-->B;

2、revert B變爲:A-->C。

 

reset命令介紹(原文

當要回退到某一次提交的狀態時,可以使用git reset命令。
git reset [--soft | --mixed | --hard] [<commit>]

其中,<commit>是指commit的hashcode。(可以使用git log查看hashcode)

也可以使用HEAD代替<commit>,命令爲
git reset [--soft | --mixed | --hard] [HEAD]

補充:

1、上一次commit(倒數第二次):HEAD^  或者 HEAD~1 

2、上上一次commit(倒數第三次):HEAD^^  或者 HEAD~2

3、--soft僅將head指針指向歷史版本,不會改變工作區和暫存區的內容 

4、--mixed將head指針指向歷史版本,且用歷史版本的暫存區覆蓋當前暫存區(默認的選項)

5、--hard將head指針指向歷史版本,同時覆蓋工作區和暫存區的內容(比較危險慎用)

 

回滾具體情況的使用:(原文

1、已修改,未git add

git checkout . (git checkout .和git add .是一對反義詞)

2、已git add,未commit(到了暫存區)

git reset 先用Head指針覆蓋當前的暫存區內容

git checkout . 再用暫存區內容覆蓋工作區內容

或者

git reset --hard 直接使用head覆蓋當前暫存區和工作區

3、已經commit,未push

git reset --mixed HEAD^  覆蓋本地的暫存區

git checkout .

或者

git reset --hard HEAD^

git reset --soft HEAD^ 相當於回退到倒數第二次commit,並且已git add,未commit) 

4、已經push

對於已經提交到遠端的公共分支比如master上的commit只能用revert來進行回退操作

 

revert命令介紹

撤銷某次操作(刪除指定的commit操作的內容),此次操作之前和之後的commit和history都會保留,並且把這次撤銷作爲一次最新的提交。

撤銷最新的提交:git revert HEAD

撤銷最新的三次提交:git revert HEAD~3...HEAD

說明:

git revert X...Y:

X...Y 代表一個左開右閉區間(X,Y],不包括X,包括Y. 其中Y爲起點commit,X爲終點commit的下一個commit。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章