Git reset 撤銷本地 遠端提交版本

2022-09-12 20:21:13 字數 1919 閱讀 5108

本文複製文字:https://

blog.csdn.net/qq_28018283/article/details/77877986

防止以後文章流失

在合作的過程中,難免會遇到需要回滾的時候,分為本地和遠端回滾。

某天,程式設計師 小a 喝了很多很多很多的酒,然後開始寫** 。

a開始改**中乙個檔案,改了半個小時,執行之後,發現已經不知道自己在寫什麼,想把這個檔案恢復到該之前的樣子

git checkout ***.file   //

恢復單個檔案

a恢復了之後,思路變的清晰了不少,下筆如神,重新改好,commit了工作區的變動,這時a發現:我的天,我都改了什麼?這**可太 low 了。我可不能提交我醜陋的**!,他做了撤銷

git reset --soft head^ //

撤銷 快取區

然後又接著修改了**,終於再三思量,提交了三次 commit 。

a 提交了三次**,已經是凌晨2點,a去線上pull之後跑了一遍專案,瞬間頭腦清醒,發現由於環境不一致,導致了 bug ,思考之後,發現暫時無法解決,只好回滾,小a首先將自己本地**倉庫回滾到,上一次的版本,可以通過reset來回滾。

首先需要知道之前提交的版本號,小a通過git log檢視提交版本

commit 25de78c066faccf5732dc86c62ebd9e85a7d6015

author: ***

date: wed sep 6 15:39:58 2017 +0800最新一次提交

commit 85c16a9c048a035c4796f373b8816c0b2f017d18

author: ***

date: wed sep 6 13:33:56 2017 +0800上一次提交

commit 9425c47b6cb54cdb06127749488bc48243832ad7

author: ***

date: wed sep 6 13:33:56 2017 +0800倒數第三次提交

...

git reset --hard head^ //

撤銷工作區到上乙個版本

小a又覺得或許應該將**回滾到上兩次的版本

git reset --hard 9425c47b6 //

版本號可以省略寫

或git reset --hard head~2

小a 一看,居然將本地版本回滾到了倒數三次的版本,他生氣給了自己一巴掌。然後

git reset --hard  85c16a9c

終於將版本恢復到了倒數第二次提交,可氣的是,小a太過激動,把水杯打翻了,電腦cila就關機了,小a 顫抖著雙手,終於把電腦重新開啟,他只想知道自己剛剛reset 了沒有,於是小a

git reflog

25de78c head@: reset: moving to 85c16a9c

看到了,最近的操作記錄,已經會滾到了倒數第二次提交,這時候,a將他本地的**, 回滾到了他想到的版本,但是遠端倉庫還是停留在最新版本,他 嘆了口氣,-f推上去,這樣遠端的版本就被撤銷了。

git push -f

注:有些 git server 不允許這樣做,比如gitlab ,但是可以通過管理員開啟。

這樣,a 就將本地和遠端master 都恢復到了上兩次提交的版本。小a迷迷糊糊的把 qq 簽名改成 「喝酒不寫碼,寫碼不喝酒」 ,然後便一頭栽進枕頭,呼呼入睡。

撤銷 Git reset操作

本文 找回git中丟失的commit 在使用git的過程中,有時候會因為一些誤操作,比如reset rebase merge等。特別是在commit之後又執行了git reset hard head強制回滾本地記錄以及檔案到伺服器版本,導致本地做的修改全部恢復到git當前分支的伺服器版本,同時自己的...

Git 撤銷本地修改

一 未使用 git add 快取 時。可以使用 git checkout filepathname 比如 git checkout readme.md 不要忘記中間的 不寫就成了檢出分支了!放棄所有的檔案修改可以使用 git checkout 命令。此命令用來放棄掉所有還沒有加入到快取區 就是 gi...

git 撤銷,放棄本地修改

一 未使用 git add 快取 時 可以使用 git checkout filepathname 比如 git checkout readme.md 不要忘記中間的 不寫就成了檢出分支了!放棄所有的檔案修改可以使用 git checkout 命令。此命令用來放棄掉所有還沒有加入到快取區 就是 gi...