git版本回退方式(git?reset、git?revert、git?stash)
本文 git 相關(guān)命令
- git reset: 回退版本,可指定某一次提交的版本。
git reset [--soft | --mixed | --hard] commitId。 - git revert: 撤銷某個提交,做反向操作,生成新的commitId,原有提交記錄保留。
git revert commitId。 - git commit --amend:
git commit –amend既可以對上次提交的內(nèi)容進行修改,也可以修改提交說明 - git status: 查看文件在工作區(qū)和暫存區(qū)的狀態(tài)。
- git log: 查看代碼提交記錄,找到需要回滾的目標(biāo)版本號。
回退的兩種情況
修改README.md前
回退分兩種情況:
1.已 commit,未push到遠程倉庫

修改README.md后

1.1 git reset --soft (撤銷commit)修改了README.md,文檔內(nèi)容,并提交到了本地倉庫

此時回滾README.md,通過 git reset --soft HEAD^ 回退上一個commit

注意: HEAD^的意思是上一個版本,也可以寫成HEAD~1 ,如果你進行了2次commit,想都撤回,可以使用HEAD~2,這個命令僅僅是撤回commit操作,寫的代碼仍然保留1.2 git commit --amend(修改commit 提交的內(nèi)容)
修改了README.md,文檔內(nèi)容,并提交到了本地倉庫

輸入 git commit --amend,利用vim語法,點擊i進入編輯模式,修改對應(yīng)文本內(nèi)容,點擊Esc退出編輯模式,按鍵:wq強制退出



1.3 git reset --mixed(撤銷 commit 和 add 兩個動作)
此時已經(jīng)執(zhí)行add和commit兩個操作,git狀態(tài)是這樣的

輸入git reset --mixed HEAD^ 撤銷 commit 和 add 兩個動作

2.已 commit,并且push到了遠程倉庫
2.1 git stash save “XXX”( 如果當(dāng)前已修改了代碼文件,發(fā)現(xiàn)需要進行版本回退,可以使用,將當(dāng)前文件緩存)
輸入git stash save "XXX"(能夠?qū)⑺形刺峤坏男薷模üぷ鲄^(qū)和暫存區(qū))保存至堆棧中,用于后續(xù)恢復(fù)當(dāng)前工作目錄)

輸入git stash pop/apply ,將當(dāng)前stash中的內(nèi)容彈出,并應(yīng)用到當(dāng)前分支對應(yīng)的工作目錄上。
注:pop將堆棧中最近保存的內(nèi)容刪除(棧是先進后出),aplly不會刪除保存的內(nèi)容


可以使用git stash apply + stash名字(如stash@{1})指定恢復(fù)哪個stash到當(dāng)前的工作目錄。
git stash clear (清除堆棧中的所有 內(nèi)容)
本文主要講版本回退,相關(guān)緩存操作,請自行查找
2.2 git reset --hard 版本號(撤銷并舍棄版本號之后的提交記錄)
git log找到要回退到的版本號,當(dāng)前第五次修改已緩存尚未提交,處于第四次提交的版本,此處要回退到第三次版本

輸入git reset --hard be125c629a893e28f62439cf71b1e9671c73a4bb 回退到第三版本

此時README.md文檔內(nèi)容為

git push -f(強制推送到遠程,之前提交都會被覆蓋,慎用)

注: 通過reset的方式,此時可用看到提交記錄和文件都被撤銷了,reset之后,后面的版本就找不到了使用需謹(jǐn)慎,不推薦使用。
2.3 git revert 版本號(撤銷,但是保留了提交記錄)
git log找到要回退到的版本號,當(dāng)前處于第四次提交的版本,此處要回退到第三版本

輸入git revert -n be125c629a893e28f62439cf71b1e9671c73a4bb^..HEAD 回退到第三版本

提交文件,并查看日志


注: 這種方式不會把版本往前回退,而是生成一個新的版本。所以,你只需要讓別人更新一下代碼就可以了,你之前操作的提交記錄也會被保留下來
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

