最近開始使用git作爲版本控制工具,但是自己老是記不住相應的命令,所以在這裏整理部分有關git的命令,
一、查看當前狀態
1.1 查看當前commit內容的狀態
git status
1.2 查看commit的日誌
git log #查看當前的commit內容
git reflog #查看歷史的commit內容
1.3 查看commit的具體修改內容
$ git diff readme.txt
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
Git is free software.
二、修改commit內容
2.1 如果git commit之後發現commit的message出現了錯誤,可以用以下的命令修改最近一次commit的message
git commit --amend
之後會出來一個vim編輯界面,直接修改commit message之後,:wq!退出即可
2.2 如果要修改的最近多次的commit message的話按如下的命令進行修改
git rebase -i HEAD~3
命令表示要修改最近3次commit的信息,輸入之後會出來如下的信息
pick:*******
pick:*******
pick:*******
按鍵盤i然後將pick改爲edit,之後就可以保存退出,然後通過命令
git commit --amend
來切換進行commit message的修改,在全部修改完成之後,輸入下面的命令完成修改
git rebase --continue
三、撤銷版本修改
注意git在進行版本控制時,本質上是文件指針的移動
3.1 徹底刪除最近的幾次commit
git reset --hard 版本號#版本號可以用git log查看
git reset --hard HEAD^ #回退到上一個版本
git reset --hard HEAD~n #回退到n個版本前
注意這條命令會導致當前內容回到你指定的版本,這時你的工作區就是你所指定的版本的內容
另外如果你通過上面的命令進行撤回之後發現其實修改是可以的,想要變回去,也可以通過git reset --hard +版本號來實現
3.2 撤回commit但是保留更改
如果你在還沒改完文件就commit,發現還需要加幾個字在文件中,就不可以用3.1的命令,因爲他會導致你之前做的修改全部丟失,如果你希望撤銷commit,但把最近這一次commit的內容放到工作區,則可以通過以下的命令
git reset --soft 版本號#撤銷後放到你的工作區
git reset --mixed 版本號#撤銷後放到你的暫存區
注:如果你當前commit了一個版本,版本號爲7ai923h,你上一次commit了一個版本,版本號爲899hslfls,如果你要撤銷最近一次的commit,但是保留做好的修改到工作區,你的命令應該是git reset --soft 899hslfls.
3.3 撤回工作區的修改
如果你修改了當前文件,但是還沒有將改文件添加到暫存區,也就是還沒有執行git add 文件,可以用如下的命令修改
git checkout -- 文件名
命令git checkout -- readme.txt
意思就是,把readme.txt
文件在工作區的修改全部撤銷,這裏有兩種情況:
一種是readme.txt
自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;
一種是readme.txt
已經添加到暫存區後,又作了修改,現在,撤銷修改就回到添加到暫存區後的狀態。
總之,就是讓這個文件回到最近一次git commit
或git add
時的狀態。
3.4 撤銷暫存區的修改
如果你修改了並且添加到暫存區但是還沒有commit,那麼可以用以下的命令將暫存區的修改取出,並放到你的工作區
git reset HEAD 文件名
結合上面的git reset --mixed 文件名,再利用git reset HEAD 文件名,就實現了git reset --soft的效果