git分支或指定文件回退到指定版本命令詳解
一、分支回滾
1. 使用 git reset 命令
命令可以將當(dāng)前分支的 HEAD 指針指向指定的提交,從而回退代碼到指定版本。
該命令有三種模式:–soft、–mixed 和 --hard。它們的區(qū)別在于回退代碼的程度不同。
- --mixed (默認(rèn)):將 HEAD 指針和暫存區(qū)都回退到指定提交,但不改變工作區(qū)的內(nèi)容。
- --soft 僅將 HEAD 指針回退到指定提交,不改變暫存區(qū)和工作區(qū)的內(nèi)容。
- --hard 將 HEAD 指針、暫存區(qū)和工作區(qū)都回退到指定提交,會(huì)丟失最新的代碼修改,慎用。
# 查看提交歷史 git log # 回退到指定提交(使用 --soft 模式) git reset --soft <commit> # 查看狀態(tài),確認(rèn)回退操作是否正確 git status # 提交回退后的代碼 git commit -m "回退到 <commit>" # 將修改的代碼推送到遠(yuǎn)程倉(cāng)庫(kù) git push origin <branch>
2.使用 git revert 命令
git revert 命令可以將指定提交的修改反向應(yīng)用到當(dāng)前分支上,相當(dāng)于撤銷指定提交的修改。
這種方式比使用 git reset 命令更加安全,因?yàn)樗粫?huì)改變提交歷史,而是創(chuàng)建一個(gè)新的提交來(lái)撤銷之前的修改。
# 查看提交歷史 git log # 撤銷指定提交,這樣會(huì)創(chuàng)建一個(gè)新的提交來(lái)撤銷之前的修改 git revert <commit> # 提交撤銷操作 git commit -m "回退到版本 <commit>" # 推送到遠(yuǎn)程倉(cāng)庫(kù) git push origin <branch>
3.使用 git checkout 命令
git checkout 命令可以將當(dāng)前分支的 HEAD 指針指向指定的提交,并將工作區(qū)的內(nèi)容替換成指定提交的內(nèi)容。這種方式不改變提交歷史,但會(huì)直接覆蓋工作區(qū)的內(nèi)容,慎用。
# 查看提交歷史 git log # 切換到指定提交 git checkout <commit> # 提交回退后的代碼 git commit -m "回退到版本 <commit>" # 切回到原來(lái)的分支 git checkout <branch> # 推送當(dāng)前分支到遠(yuǎn)程倉(cāng)庫(kù) git push origin <branch> #<branch> 表示當(dāng)前分支的名稱,例如 master。這個(gè)命令會(huì)將本地分支的提交推送到遠(yuǎn)程倉(cāng)庫(kù),并將遠(yuǎn)程分支更新為與本地分支一致。
二、某個(gè)文件回滾
如果某次改動(dòng)比較大,牽涉到的文件比較多。但是某個(gè)文件本來(lái)是沒(méi)問(wèn)題的,結(jié)果畫(huà)蛇添足,改出問(wèn)題來(lái)了,這時(shí)候直接回退版本會(huì)把所有代碼都回退掉,可能得不償失。這時(shí)候就需要指定回退單個(gè)文件到為修改之前的版本。
1.查看哪些文件發(fā)生修改
首先先獲取需要回退的文件路徑,比較簡(jiǎn)單的方法就是,在該文件加個(gè)細(xì)微改動(dòng),比如一條無(wú)關(guān)注釋,然后通過(guò)git status
可以看到當(dāng)前分支下修改的文件信息
git status
查看文件內(nèi)容變化
git diff commitId1 commitId2 或 git diff commitid 本地文件
2.然后查看提交記錄(最近幾次提交)
git log -2
commit 3f290fa303e1aceea63e215a7ec68a5381eb8034 (HEAD -> main, origin/main)
Author: ning <ning@xxx.com>
Date: Thu Sep 21 16:39:35 2023 +0800test buffer
commit 9bec77097394b5dcba39d79da7c6ea7ed73474f1
Author: ning <ning@xxx.com>
Date: Thu Sep 21 16:36:26 2023 +0800test buffer
這里有兩個(gè)參數(shù)需要記錄下來(lái)
- 需要回退的文件路徑:/source/code/test.java (git status 命令可以看到)
- 需要回退到哪的 commit ID:3f290fa303e1aceea63e215a7ec68a5381eb8034
3.執(zhí)行提交命令
執(zhí)行 git checkout commitID 回滾文件路徑
? git:(test) git checkout 3f290fa303e1aceea63e215a7ec68a5381eb8034 /source/code/test.java Updated 1 path from 3f290fa30
此時(shí)代碼就會(huì)還原到登錄功能大改之前,如果不需要做啥修改,直接可以commit。
總結(jié)
到此這篇關(guān)于git分支或指定文件回退到指定版本命令的文章就介紹到這了,更多相關(guān)git分支回退指定版本內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
HTTP協(xié)議入門(mén)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了HTTP協(xié)議入門(mén)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07關(guān)于頁(yè)面刷新,事件重復(fù)提交的方法分享
在處理頁(yè)面事件時(shí),我們會(huì)經(jīng)常會(huì)碰到這樣的情況:當(dāng)我們?cè)谔峤灰豁?xiàng)頁(yè)面表單時(shí),在提交成功后,當(dāng)我們?cè)噲D按F5刷新頁(yè)面時(shí),數(shù)據(jù)會(huì)再次的被重復(fù)提交2012-10-10vscode配置遠(yuǎn)程開(kāi)發(fā)與免密登錄的技巧
這篇文章主要介紹了vscode配置遠(yuǎn)程開(kāi)發(fā)與免密登錄的技巧,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04Unity開(kāi)發(fā)VR項(xiàng)目問(wèn)題總結(jié)分析
本篇文章主要對(duì)Unity開(kāi)發(fā)VR項(xiàng)目會(huì)遇到的一些問(wèn)題總結(jié),針對(duì)這些問(wèn)題進(jìn)行分析解決,有需要的朋友可以借鑒參考下,希望對(duì)大家有所幫助2021-09-09Git恢復(fù)之前版本的兩種方法reset、revert(圖文詳解)
這篇文章主要介紹了Git恢復(fù)之前版本的兩種方法reset、revert(圖文詳解),文中通過(guò)圖文示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07