git查看歷史和撤銷操作
撤銷提交
git commit --amend
可以撤銷上一次提交的內容,不過並不是撤銷整個提交的記錄,當使用這個命令之后可以修改提交信息,同時,這個命令也會自動將暫存區中的所有文件提交。如果自上次提交以來未做任何修改,比如在上次提交之后立即執行這個命令,那么快照會保持不變,所修改的只是提交信息。
首先修改Test7.md,並提交
假如這時候突然發現上一個提交中遺漏了一個Test8.md,這時候只需要將Test8.md添加到暫存區。並使用命令git commit --amend
可以在最上面一行修改提交信息,改成“modified Test7.md and add Test8.md.”然后保存並退出vim的編輯,這時候查看提交歷史(git log):
可以發現提交信息已經更改。
撤銷暫存的文件
在Files文件夾添加Test4.md並添加到暫存區中
如果想要撤銷處於暫存區的Test4.md,根據git status
的提示可以看出應該使用git reset HEAD Test4.md
命令。此時再使用git status
可以看出Test4.md已經處於未被跟蹤狀態。
撤銷對文件的修改
首先將已經處於暫存區的Test4.md做一些修改,再查看其狀態:
根據status命令的提示也可以知道想要撤銷對文件的修改需要使用命令git checkout --Test4.md
這是再查看其狀態:
可以發現文件恢復成了開始的樣子。
但是並不太建議使用上面的命令,要注意的是在git中已提交的東西幾乎都是可以恢復的,但是任何沒有提交的東西丟失后很可能再也找不回來了。上面的命令就是將未提交的內容丟失了
查看歷史
使用git log
命令可以會按時間列出所有更新,會列出每個提交的SHA-1校驗和,作者的名字和和電子郵件信息,提交時間和提交說明。
git log -p
可以顯示每次提交的內容差異,可以加上-2
來僅僅顯示最近兩次的提交。
git log --stat
可以看到每次提交的簡略的統計信息,也就是-p
選項的簡略版,當然也可以加上-2
選項來顯示最近兩次的提交
還有一個常用的選項是--pretty
,這個選項有一些內建的子選項可以選擇,比如用oneline
將每個提交放在一行顯示,當查看的提交數很大時很有效果,另外還有short,full,fuller
可以用,展示的信息或多或少有一些不同。
之前的-2
選項其實是git中限制輸出長度的選項,它限制了只顯示最近的兩條提交,另外還有按照時間做限制的選項,比如--since
和until
也很有用
還有一個format
選項,可以定制要顯示的記錄格式,在這里就不詳細介紹了,一般用上面的命令足夠。