# 撤銷修改是指將工做區中的修改撤銷 git checkout [文件名或路徑] # 一、撤銷工做區中當前目錄中的全部修改 git checkout . # 二、撤銷工做區中指定文件的修改 git checkout -- filename
注意:checkout命令只能撤銷工做區中的修改,不能撤銷暫存區中的修改php
git checkout命令還有一個很是重要的做用就是切換分支,可用於分支管理java
# 一、切換到指定分支(若是分支在本地不存在,會自動從遠程倉庫拉取) git checkout dev # 二、切換分支的同時建立分支 git checkout -b dev
# 版本回退是指將版本庫從當前版本回退到其餘版本 git reset -- hard 版本號
有時,咱們須要將Git版本回退(還原)到之前的某個版本,可使用 git reset 命令git
在git中,HEAD指針指向的是當前版本,也就是最新的conmit id,上一個版本是 HEAD^,上上個版本就是 HEAD^^,上50個版本能夠寫做HEAD~50 。app
# 可使用下面的命令,回退到上一個版本 git reset --hard HEAD^
這時,咱們再使用 git log 命令查看版本庫被修改的日誌。卻發現,看不到被回退的版本以後的歷史記錄了。 若是,想再回到最新的版本,怎麼辦? spa
只要剛剛的命令行窗口沒有關掉,你就能夠順着往上面找,直到發現最新的版本號(如4b2a0c88a2d03675694013ac6a2bd6f55c830cdc),命令行
# 就可使用下面的命令還原到指定的版本,版本號(commit id)不必寫全,通常寫前七位就夠了,Git會自動去匹配: git reset --hard 4b2a0c8
可是,假如你回退到了某個版本後,把電腦關了。次日又後悔了,想要恢復到最新版本。指針
這時,可使用命令 git reflog 來查看你的每一次操做日誌,該命令能夠輸出對應的版本號的操做記錄。這樣,咱們就能夠恢復到任意版本了。 日誌
語法:git reset options blog
git reset 有不少可用選項,可使用命令 git reset -h 來查看it
其中最經常使用的三個選項是:
語法:git status
git status 命令很是有用。它能夠查看版本庫的當前狀態,還能夠看到相關操做的提示信息。
# 若是你修改了工做區中的某些文件,想要查看具體更改了什麼內容,可使用 git diff 命令 git diff . git diff filename
# 若是你只是修改了工做區,尚未 git add 到暫存區,想要查看工做區和版本庫的區別。 # 查看工做區和版本庫的區別 git diff
上述命令只能查看到工做區中 已經存在的文件的修改,若是是新建立的文件,它追蹤不到。若是修改和新文件已經 git add 到了暫存區,就須要使用下面的命令來查看。
# 若是你修改了工做區,已經 git add 到了暫存區,想要查看暫存區和版本庫的區別。 git diff --cached
若是你修改了工做區,已經 git add 到了暫存區,而且 git commit 到了版本庫。這樣 head 指針就指向了最新的版本。想要比較兩個版本之間的區別。
語法: git diff [版本號1] [版本號2]
# 比較兩個版本之間的差別 git diff 4129523 0a7d9af # 4129523:表示上一個版本號 # 0a7d9af:當前版本號(最新版本號) # 比較以前的版本和當前版本的差別 git diff 4129523 head # 比較某個文件在兩個版本之間的差別 git diff 09d9b45 head ./config/app.php # 比較以前的版本和當前版本的差別的簡寫形式 git diff 4129523
語法:git diff [branch1] [branch2]
# 比較develop分支和master分支的區別 git diff develop master
# 對比本地的develop分支和遠程master分支的區別 git diff develop origin/master
若是你想查看版本庫提交的歷史記錄,可使用 git log 命令。
# 查看版本庫的歷史記錄 git log # 查看版本庫的歷史記錄,美化輸出 git log --pretty=oneline # 查看版本庫的歷史記錄,只顯示前 5 條 git log -5 git log -5 --pretty=oneline
場景一
# 僅僅是撤銷工做區中的修改 git checkout .
場景二
# 若是你想撤銷工做區和暫存區中的修改。 git reset --hard HEAD # 簡寫爲 git reset --hard # 若是你僅僅只是想要撤銷暫存區中的修改。 git reset --mixed # 簡寫爲 git reset
場景三
# 若是你想回退到上一個版本,可使用下面的命令。 git reset --hard HEAD^ # 查看當前的版本號,可使用。 git rev-parse HEAD
說明:完整的版本回退,包含三個要素: