git reset 版本回退的三種用法總結(jié)
git reset (--mixed) HEAD~1
回退一個版本,且會將暫存區(qū)的內(nèi)容和本地已提交的內(nèi)容全部恢復(fù)到未暫存的狀態(tài),不影響原來本地文件(未提交的也不受影響)
git reset --soft HEAD~1
回退一個版本,不清空暫存區(qū),將已提交的內(nèi)容恢復(fù)到暫存區(qū),不影響原來本地的文件(未提交的也不受影響)
git reset --hard HEAD~1
回退一個版本,清空暫存區(qū),將已提交的內(nèi)容的版本恢復(fù)到本地,本地的文件也將被恢復(fù)的版本替換
文件對比
git diff HEAD -- readme.txt 工作區(qū)文件和版本庫對比
git diff -- readme.txt 工作區(qū)和暫存區(qū)對比
好基友之git reset --hard和git clean -f
git clean經(jīng)常和git reset --hard一起結(jié)合使用. 記住reset只影響被track過的文件, 所以需要clean來刪除沒有track過的文件. 結(jié)合使用這兩個命令能讓你的工作目錄完全回到一個指定的<commit>的狀態(tài)
git checkout . #本地所有修改的。沒有的提交的,都返回到原來的狀態(tài)
git stash #把所有沒有提交的修改暫存到stash里面??捎胓it stash pop回復(fù)。
git reset --hard HASH #返回到某個節(jié)點(diǎn),不保留修改。
git reset --soft HASH #返回到某個節(jié)點(diǎn)。保留修改
git clean -df #返回到某個節(jié)點(diǎn)
git clean 參數(shù)
-n 顯示 將要 刪除的文件和目錄
-f 刪除 文件
-df 刪除文件和目錄
git reset和git revert比較
git reset原理: git reset的作用是修改HEAD的位置,即將HEAD指向的位置改變?yōu)橹按嬖诘哪硞€版本,如下圖所示,假設(shè)我們要回退到版本一。

git revert原理 : git revert的作用通過反做創(chuàng)建一個新的版本,這個版本的內(nèi)容與我們要回退到的目標(biāo)版本一樣,但是HEAD指針是指向這個新生成的版本,而不是目標(biāo)版本。如下圖所示,假設(shè)我們要回退到版本一,版本四的內(nèi)容和版本一是一樣的。

git log 和git reflog比較
git log 命令可以顯示所有提交過的版本信息
git reflog 可以查看所有分支的所有操作記錄(包括已經(jīng)被刪除的 commit 記錄和 reset 的操作)
例如執(zhí)行 git reset --hard HEAD~1,退回到上一個版本,用git log則是看不出來被刪除的commitid,用git reflog則可以看到被刪除的commitid,我們就可以買后悔藥,恢復(fù)到被刪除的那個版本。
不定期持續(xù)更新~~~