IDEA git版本回滾使用解讀
1.git分區(qū)
git的版本回滾其實就是回滾不同的分區(qū),所以在聊git回滾之前我們有必要簡單了解一下git的分區(qū)。
git在本地有三大分區(qū):工作區(qū)、暫存區(qū)、版本庫。
- 工作區(qū):正在編寫,還未add的部分,紅色。
- 暫存區(qū):add后的代碼,綠色。
- 版本庫:commit后的代碼,灰色。

在IDEA中,在loacl changes中可以看到在工作區(qū)中和暫存區(qū)中的內(nèi)容:

版本庫中的內(nèi)容可以從log中看出來,log中可以看到commit test這條提交的分支是本地的main分支,如果是已經(jīng)同步到遠端的提交分支會顯示為origin/main:

2.未commit,進行回滾
已經(jīng)add到暫存區(qū),但是未commit到本地版本庫的改動有兩種:
- 新增的文件
- 修改的文件
新增的文件直接刪除即可,如果是修改的文件,使用roll back來回滾。在local change里面,選擇想要rollback的文件即可:

也可以直接右擊要rollback的文件然后rollback也行。
3.commit未push,進行回滾
3.1.undo commit
commit到本地版本庫并且還未push的代碼,可以在log里右擊單次提交進行undo commit:

需要注意的是undo commit只能從最后一次commit開始回滾,undo commit后會要求選擇一個變更列表來存放回滾后的內(nèi)容,可以自己新建一個,比如此處的commit test,也可以在下拉框里選擇一個已經(jīng)存在的,如果是自己新建的變更列表,勾選了set active選項,后續(xù)的變動也會存放到該變更列表中:

可以看到多了一個變更列表:

變更列表有什么用喃?其實變更列表可以把它視為一個命名空間,就是用來做資源隔離的,在進行commit的時候需要下拉選擇不同的變更列表來進行提交:

3.2.reset
有時候我們需要直接將本地的代碼回滾到版本庫的某一個版本,這時候可以使用reset來進行回滾。reset有幾種模式:
soft,將版本回滾,工作區(qū)不動,暫存區(qū)=原來的+回滾后和回滾前的版本差異。mixed,將版本回滾,回滾到了所有 git add 和 git commit 的命令執(zhí)行之前。暫存區(qū)變?yōu)榭?,變更全部到了工作區(qū)。hard,將版本回滾,將所有工作區(qū)和暫存區(qū)的文件修改全部清空,是真正的覆蓋,不能找回了。keep,將版本回滾,將所有commit的內(nèi)容丟棄掉,未commit的內(nèi)容保留。
在log上選擇要回滾到的具體版本:

reset時會要求選擇回滾的模式:

4.已commit&push,進行回滾
對commit&push的內(nèi)容進行回滾其實就是對遠端倉庫的代碼版本進行回滾,在實際開發(fā)中偶爾會將內(nèi)容誤推送到了遠端倉庫上去。
比如commit的message寫錯了,查看log的時候才發(fā)現(xiàn),比如不小心將本地還沒有開發(fā)完成的代碼推送到遠端倉庫了,由或者合并沖突或者分支的時候合并錯了......等等這些情況都要我們對遠端倉庫的代碼進行回滾。
回滾的方式其實很簡單,就是將本地的代碼版本回滾到指定版本(至于是用revert還是reset,看自己),然后將本地的版本用git push -f強推到遠端。
在IDEA中可以在terminal中執(zhí)行指令:

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
淺談Java內(nèi)存區(qū)域劃分和內(nèi)存分配策略
這篇文章主要介紹了淺談Java內(nèi)存區(qū)域劃分和內(nèi)存分配策略,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-05-05
java 根據(jù)經(jīng)緯度獲取地址實現(xiàn)代碼
這篇文章主要介紹了 java 根據(jù)經(jīng)緯度獲取地址實現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-05-05
淺談MultipartFile中transferTo方法的坑
這篇文章主要介紹了MultipartFile中transferTo方法的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
關(guān)于Spring中的@Configuration中的proxyBeanMethods屬性
這篇文章主要介紹了關(guān)于Spring中的@Configuration中的proxyBeanMethods屬性,需要的朋友可以參考下2023-07-07
Spring SpringMVC在啟動完成后執(zhí)行方法源碼解析
這篇文章主要介紹了SpringMVC在啟動完成后執(zhí)行方法源碼解析,還是非常不錯的,在這里分享給大家,需要的朋友可以參考下。2017-09-09

