(相關命令:git reset、git log、git reflog,要看文件的話用--help。)
這是一次愚蠢的行為之後的總結……避免我之後忘記了解決方法【逃
get reset --hard是乙個非常危險的行為。
比如該專案,git log顯示:
$ git logcommit cc53a1925fb7895ad88d155a43f3012249615919 (head ->master)
author: ***
date: mon mar 12 16:47:00 2018 +0800
version
1commit 1ca078c22c4b7d5c79214069cb1be8d4122dbe7e
author: ***
date: mon mar 12 16:46:46 2018 +0800
version
0
此時執行git reset --hard head^(回退為head前一次提交):
$ git reset --hard head^head is now at 1ca078c version0
此時再次檢視git log,發現version 1提交沒有了。git log只檢視當前提交的祖先。
$ git logcommit 1ca078c22c4b7d5c79214069cb1be8d4122dbe7e (head ->master)
author: ***date: mon mar 12 16:46:46 2018 +0800version
0
此時可以git reflog,即檢視每一次head的變化,並reset到需要的commit。
$ git reflog1ca078c (head -> master) head@: reset: moving to head^cc53a19 head@: commit: version 1
1ca078c (head -> master) head@: commit (initial): version 0
$ git reset cc53a19 --hard
head is now at cc53a19 version
1
或者用git log -g(即--walk-reflogs)檢視每一次head的變化的日誌,並進行reset。(**略
撤銷 Git reset操作
本文 找回git中丟失的commit 在使用git的過程中,有時候會因為一些誤操作,比如reset rebase merge等。特別是在commit之後又執行了git reset hard head強制回滾本地記錄以及檔案到伺服器版本,導致本地做的修改全部恢復到git當前分支的伺服器版本,同時自己的...
git reset 回退操作記錄
push到遠端的commit需要回退操作 例如 當前commit節點為d,之前有abc三個commit操作 git reset hard c hard 表示徹底清空當前工作目錄和暫存區的內容,當發現提交的d節點存在錯誤,需要回退到c節點時執行,執行後回退節點之後的所有更改都不會出現到當前工作目錄裡中...
Git reset命令的使用
weiweilong 關注 git reset 命令有三個主要選項 git reset soft git reset mixed git reset hard git reset soft 將head引用指向給定提交。索引和工作目錄的內容是不變的,在三個命令中對現有版本庫狀態改動最小。git res...