1. 程式人生 > >Git-撤銷/回滾操作

Git-撤銷/回滾操作

git結構和各操作之間的關係

git分層
WorkDir進行add操作將當前修改同步到 Index,執行commit操作同步到Head,執行push上傳到Server。

撤銷add操作

撤銷add
git reset [HEAD/commitid] 使用HEAD或者commitid覆蓋Index,不影響Head和WorkDir,如果是在commit之後執行這個操作相當於同時撤銷了commit和add操作
git reset [HEAD/commitid] – file 針對某個檔案使用HEAD或者commitid覆蓋Index,不影響Head和WorkDir

撤銷commit操作

撤銷commit
git reset –soft HEAD^ 重置HEAD到上一版本,即撤銷commit操作,不影響index和workdir。
git reset –soft HEAD^1 ^後面的數字表示恢復到哪個父提交的版本,一個提交可能會對應多個父提交,用於指定回到哪個
git reset –soft commitid 後面新增comiit_id指明回退到哪個版本

撤銷commit和add

撤銷commit和add
git reset –mixed HEAD^ 效果同git reset HEAD^
git reset –mixed HEAD^1 ^後面的數字表示恢復到哪個父提交的版本,一個提交可能會對應多個父提交,用於指定回到哪個

撤銷commit、add操作,並將本地版本也重置為上一版本

撤銷commit、add並重置本地
git reset –hard HEAD^ 重置head到上一版本,會覆蓋index, –hard會使head、index、workdir都重置回之前的版本,遠端伺服器上不會變,如果希望遠端伺服器上也回到上一版本的話,就使用一下git push –force。
git reset –hard HEAD^1 ^後面的數字表示恢復到哪個父提交的版本,一個提交可能會對應多個父提交,用於指定回到哪個
git reset –hard commitid 用commit_id指定回到哪次 commit

git revert

git revert commitid 使用某一次提交覆蓋當前,已達到恢復到某次的效果。revert之後執行一次git push同步到server。

git reset 和 git revert 的區別

git reset 簡單暴力的將版本置回到某個版本,現在有過a、b、c、d四次提交,提交順序為a、b、c、d,現在為d。使用git reset恢復到a之後,看git log,就只剩下a了,b、c、d都不見了。使用git revert恢復到a之後,看git log,會發現a、b、c、d都在,多了e操作,e操作為“revert a”。
原始log:
原始log
執行過git reset之後:
reset之後
可以看到commitid為7f****的log記錄已經沒有了

再來看一下revert:
revert
解決完衝突,revert之後:
revert之後
可以看到這裡多了一條“Revert ‘commit add’”的記錄。

相關推薦

Git撤銷&操作

開發過程中,你肯定會遇到這樣的場景: 場景一: 糟了,我剛把不想要的程式碼,commit到本地倉庫中了,但是還沒有做push操作! 場景二: 徹底完了,剛線上更新的程式碼出現問題了,需要還

Git-撤銷/操作

git結構和各操作之間的關係 WorkDir進行add操作將當前修改同步到 Index,執行commit操作同步到Head,執行push上傳到Server。 撤銷add操作 git reset [HEAD/commitid] 使

git操作和幾個命令的解析

git reset [--hard|soft|mixed|merge|keep] [commit|HEAD] revert是放棄指定提交的修改,但是會生成一次新的提交,需要填寫提交註釋,以前的歷史記錄都在; reset是指將HEAD指標指到指定提交,歷史記錄中不會出現放棄的提交記

Analysisbinlog 分析及操作介紹

binlog分析 binlog工具 mysql 工具 mysql 回滾工具 binlog 閃回 Analysisbinlog是我在學習binlog event結構及存儲的時候,為了更深入理解寫的一個對binlog的分析工具,基於python2.7開發,相較於mysqlbinlog工具顯示簡

git 強制【覆蓋】遠程 源碼庫

git reset tla hub comm 控制臺 依然 其他人 IT 功能 場景: 1、代碼中沒有刪除密鑰信息就提交到gitlab或者github 上了 2、想要刪除gitlab或者github 上已經提交的源碼和記錄,避免其他人通過gitlab控制臺看到密鑰信息

不小心merge後的操作

revert pre 合並 ima ash span font current 內容 雖然有四個方法,但我們項目中使用方法一和二比較合適,不會產生新的commit,並且簡單粗暴 方法一,新分支覆蓋 ①首先兩步保證當前工作區是幹凈的,並且和遠程分支代碼一致方法一,刪除遠程分支

git 程式碼

導讀:合併程式碼時,在解決衝突的時候不小心多刪除了一點程式碼或者是發現提交的程式碼有錯誤,導致合併後的程式碼無法執行,一直報錯,不得不進行程式碼回滾操作。 基本步驟: 1、cd+指定路徑 2、git log 拿到你之前提交的歷史,第一行的是一串40位的十六進

git提交

git reset --hard 36620e git push origin <branch> -f 其中36620e就是你要回退的版本的commit id的前面6位。 可能出現的問題 現象 $ git push origin master -f Total

用Eclipse外掛Git到之前的版本

關於head和tags。 head:我的理解是指向當前分支最新版本的一個指標。 tags:一個指標,可以指向任意一個版本。但使用回滾功能時,會導致head指標往前移動。導致後面的一些提交丟失(即分支歷史記錄中沒有了)。此時如果在回滾前通過tags記錄了head指標指向的位

Python資料庫支援:PyMySQL安裝+資料庫連線操作+捕獲異常操作

PyMySQL是python3.x版本中用於連線MySQL伺服器的一個庫,Python2使用的是mysqldb PyMySQL遵循Python資料庫API v2.0規範,幷包含了pure-Python MySQL客戶端庫。 PyMySQL安裝 地址https://g

git版本退操作

回退原因:最新提交了一次錯誤程式碼(不符合要求),想要回到上一個版本 第一步:執行git log命令,檢視提交記錄,獲取版本號(提交記錄只顯示最近三次,放大螢幕可看多次,也可手動回車依次往前檢視,ctrl+c停止) 第二步:執行git reset --hard <

關於Android Studio 使用SVN進行 專案操作

先描述下寫這備忘的原因。坑爹的As,資料真不多,在網上查詢一個怎麼用SVN進行回滾操作。查到的都是怎麼安裝SVN。最後還是在群裡面問到了答案: 1.在Upadte中選擇下面的圖片的選項。 2.在專案名上–右鍵–SubVersion–Revert進行回滾。(針對手動的修改清單檔案

git如何當前修改的內容?

git如何回滾當前修改的內容? 1、開啟git gui,在工具欄上點選 commit ,選擇 Revert Changes,  這裡可以回滾單個檔案;   2、一鍵回滾所有修改: 開啟git gui,在工具欄上點選 Branch, 然後點選 Reset...   即可

SpringCloud之利用事務Transactional,發生異常時進行操作

場景,當業務邏輯比較多,搞不好某一個環節就會出現異常。這個時候就要進行異常回滾的包裝了 程式碼: 在方法體上加上: @Transactional(rollbackFor = Exception

淺談git撤銷退命令相關用法

初來公司實習,每次改完程式碼後都需要用程式碼管理工具git提交到程式碼庫。由於剛開始對 git 並不熟悉,只會簡單的 commit,push 指令,一旦提交出了問題需要撤銷回退的話就不知道該怎麼辦了。經過一段時間的研究,總算是把裡面相關原理搞懂了,遇到git提交

【運維筆記】Git程式碼

先用Eclipse演示一下git回滾的操作, 想知道Eclipse中git外掛的安裝和使用的,可以看一下我的另一篇文章 https://blog.csdn.net/wuguifa/article/details/86134534 從git遠端倉拉取一個專案,演

Gitgit如何遠端倉庫

使用git管理專案開發的過程中經常會碰到這種情況:某次提交已經push到了遠端倉庫,可是突然意識到“天哪,我怎麼做了這麼蠢的事情”。那麼問題來了,怎麼將遠端程式碼庫回滾呢? 在網上看到大部分人給出的解決方案是先將本地回滾,然後刪除遠端分支,之後再將本地的分支push到遠端倉

git 版本及推送歷史版本到Head

1. git reset (1)Git必須知道當前版本是哪個版本,在Git中,用HEAD表示當前版本,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一樣),上一個版本就是HEAD^,上上一個版本就是HEAD^^,當然往上100個版本寫1

git如何遠端倉庫

使用git管理專案開發的過程中經常會碰到這種情況:某次提交已經push到了遠端倉庫,可是突然意識到“天哪,我怎麼做了這麼蠢的事情”。那麼問題來了,怎麼將遠端程式碼庫回滾呢? 在網上看到大部分人給出的解決方案是先將本地回滾,然後刪除遠端分支,之後再將本地的分支push到遠端倉庫,這其實是一種很危險的方案,

事務異常型別和操作

使用spring難免要用到spring的事務管理,要用事務管理又會很自然的選擇宣告式的事務管理,在spring的文件中說道,spring宣告式事務管理預設對非檢查型異常和執行時異常進行事務回滾,而對檢查型異常則不進行回滾操作。那麼什麼是檢查型異常什麼又是非檢查型異常呢?最簡單的判斷點有兩個:1.繼承自run