git版本回退方式(git?reset、git?revert、git?stash)
本文 git 相關(guān)命令
- git reset: 回退版本,可指定某一次提交的版本。
git reset [--soft | --mixed | --hard] commitId
。 - git revert: 撤銷某個(gè)提交,做反向操作,生成新的commitId,原有提交記錄保留。
git revert commitId
。 - git commit --amend:
git commit –amend
既可以對(duì)上次提交的內(nèi)容進(jìn)行修改,也可以修改提交說明 - git status: 查看文件在工作區(qū)和暫存區(qū)的狀態(tài)。
- git log: 查看代碼提交記錄,找到需要回滾的目標(biāo)版本號(hào)。
回退的兩種情況
修改README.md前
回退分兩種情況:
1.已 commit,未push到遠(yuǎn)程倉庫
修改README.md后
1.1 git reset --soft (撤銷commit)修改了README.md,文檔內(nèi)容,并提交到了本地倉庫
此時(shí)回滾README.md,通過 git reset --soft HEAD^
回退上一個(gè)commit
注意: HEAD^的意思是上一個(gè)版本,也可以寫成HEAD~1
,如果你進(jìn)行了2次commit,想都撤回,可以使用HEAD~2
,這個(gè)命令僅僅是撤回commit操作,寫的代碼仍然保留1.2 git commit --amend(修改commit 提交的內(nèi)容)
修改了README.md,文檔內(nèi)容,并提交到了本地倉庫
輸入 git commit --amend
,利用vim語法,點(diǎn)擊i進(jìn)入編輯模式,修改對(duì)應(yīng)文本內(nèi)容,點(diǎn)擊Esc退出編輯模式,按鍵:wq強(qiáng)制退出
1.3 git reset --mixed(撤銷 commit 和 add 兩個(gè)動(dòng)作)
此時(shí)已經(jīng)執(zhí)行add和commit兩個(gè)操作,git狀態(tài)是這樣的
輸入git reset --mixed HEAD^
撤銷 commit 和 add 兩個(gè)動(dòng)作
2.已 commit,并且push到了遠(yuǎn)程倉庫
2.1 git stash save “XXX”( 如果當(dāng)前已修改了代碼文件,發(fā)現(xiàn)需要進(jì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)前分支對(duì)應(yīng)的工作目錄上。
注:pop將堆棧中最近保存的內(nèi)容刪除(棧是先進(jìn)后出),aplly不會(huì)刪除保存的內(nèi)容
可以使用git stash apply + stash名字(如stash@{1})指定恢復(fù)哪個(gè)stash到當(dāng)前的工作目錄。
git stash clear (清除堆棧中的所有 內(nèi)容)
本文主要講版本回退,相關(guān)緩存操作,請(qǐng)自行查找
2.2 git reset --hard 版本號(hào)(撤銷并舍棄版本號(hào)之后的提交記錄)
git log
找到要回退到的版本號(hào),當(dāng)前第五次修改已緩存尚未提交,處于第四次提交的版本,此處要回退到第三次版本
輸入git reset --hard be125c629a893e28f62439cf71b1e9671c73a4bb
回退到第三版本
此時(shí)README.md文檔內(nèi)容為
git push -f(強(qiáng)制推送到遠(yuǎn)程,之前提交都會(huì)被覆蓋,慎用)
注: 通過reset的方式,此時(shí)可用看到提交記錄和文件都被撤銷了,reset之后,后面的版本就找不到了使用需謹(jǐn)慎,不推薦使用。
2.3 git revert 版本號(hào)(撤銷,但是保留了提交記錄)
git log
找到要回退到的版本號(hào),當(dāng)前處于第四次提交的版本,此處要回退到第三版本
輸入git revert -n be125c629a893e28f62439cf71b1e9671c73a4bb^..HEAD
回退到第三版本
提交文件,并查看日志
注: 這種方式不會(huì)把版本往前回退,而是生成一個(gè)新的版本。所以,你只需要讓別人更新一下代碼就可以了,你之前操作的提交記錄也會(huì)被保留下來
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
chatGPT與傳統(tǒng)搜索結(jié)合創(chuàng)建新一代搜索引擎
這篇文章主要為大家介紹了chatGPT與傳統(tǒng)搜索結(jié)合創(chuàng)建新一代搜索引擎優(yōu)點(diǎn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01git提交報(bào)錯(cuò)pre -commit hook failed (add 
這篇文章主要介紹了git提交報(bào)錯(cuò)pre -commit hook failed (add --no-verify)問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11如何使用Git優(yōu)雅的回滾實(shí)現(xiàn)
這篇文章主要介紹了如何使用Git優(yōu)雅的回滾實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07關(guān)于Sourcetree啟動(dòng)問題(完美解決)
文章講述了SourceTree閃退的問題及其解決方法,源因?yàn)槲搓P(guān)閉SourceTree而關(guān)機(jī)或系統(tǒng)更新導(dǎo)致緩存信息不匹配,解決方法是刪除緩存文件或特定緩存目錄中的[Composition.cache]文件2024-11-11關(guān)于代碼閱讀問題的小技巧 腳本之家原創(chuàng)(適合所有網(wǎng)站)不定時(shí)更新
因?yàn)楹芏嗑W(wǎng)站為了網(wǎng)站的安全,特將一些字符替換成中文字符,導(dǎo)致很多情況下,代碼無法運(yùn)行,或復(fù)制內(nèi)容的適合都是一行顯示,這里將會(huì)為大家整理一些。2011-01-01