Git commit
git commit 主要是將暫存區里的改動給提交到本地的版本庫。每次使用git commit 命令我們都會在本地版本庫生成一個40位的哈希值,這個哈希值也叫commit-id,
commit-id在版本回退的時候是非常有用的,它相當於一個快照,可以在未來的任何時候通過與git reset的組合命令回到這里.
1.1 git commit -m “message”
這種是比較常見的用法,-m 參數表示可以直接輸入后面的“message”,如果不加 -m參數,那么是不能直接輸入message的,而是會調用一個編輯器一般是vim來讓你輸入這個message,
message即是我們用來簡要說明這次提交的語句。還有另外一種方法,當我們想要提交的message很長或者我們想描述的更清楚更簡潔明了一點,我們可以使用這樣的格式,如下:
git commit -m ‘
message1
message2
message3
’
1.2 git commit -a -m “massage”
其他功能如-m參數,加的-a參數可以將所有已跟蹤文件中的執行修改或刪除操作的文件都提交到本地倉庫,即使它們沒有經過git add添加到暫存區,注意,
新加的文件(即沒有被git系統管理的文件)是不能被提交到本地倉庫的。建議一般不要使用-a參數,正常的提交還是使用git add先將要改動的文件添加到暫存區,再用git commit 提交到本地版本庫。
1.3 git commit --amend
如果我們不小心提交了一版我們不滿意的代碼,並且給它推送到服務器了,在代碼沒被merge之前我們希望再修改一版滿意的,而如果我們不想在服務器上abondon,那么我們怎么做呢?
git commit --amend //也叫追加提交,它可以在不增加一個新的commit-id的情況下將新修改的代碼追加到前一次的commit-id中,
(1) 假如現在版本庫里最近的一版正是我們想要追加進去的那版,此時是最簡單的,直接修改工作區代碼,然后git add,之后就可以直接進行git push到服務器,中間不需要進行其他的操作如git pull等
(2) 如果現在版本庫里最近的一版不是我們想要追加進去的那版,那么此時我們需要將版本庫里的版本回退到我們想要追加的那一版,想要將版本回退到我們想要的哪一版有好幾種方法
1) 第一種即是我們從服務器上選取我們需要的版本,直接進行挑揀,在服務器的提交管理頁面上右上方一般會有一個Download按鈕,點擊會彈出一個下拉框,選擇其中的cherry-pick,復制命令,
之后在我們版本倉庫對應的目錄下運行這個命令,執行完后,使用git log -1 命令,可以查看到現在版本庫里最近的一版變成了我們剛才挑揀的這版,此時再在工作區直接修改代碼,
改完之后進行git add,再執行本git commit --amend命令,之后git push.
2) 使用gitk或其他的圖形界面化工具,在終端輸入 gitk,回車,會彈出gitk的圖形界面,在界面的左側部分陳列着版本庫中的一條條commit-id,此時選中我們需要的那一版,右鍵點擊之后會彈出一個
選擇菜單,如果是在master 分支上,那么其中會有一項是 Reset master branch to here,點擊這項,會彈出一個名為confirm reset的確認box,選擇reset type 中的hard項,再點擊OK,
關閉gitk圖形界面,回到終端,運行git log -1命令,發現現在版本庫里最近的一次提交已經是我們希望的那一版了,此時再在工作區直接修改代碼,改完之后進行git add,
再執行本git commit --amend命令,之后git push.
3) 如果我們知道我們需要的版本與現在最近的版本中間隔着 n 個提交,那么我們可以直接使用git reset --hard HEAD~n命令,關於git reset 命令有詳解,此時這個命令執行完后,
運行git log -1 命令我們會發現現在版本庫里最近的一版就是我們需要的那版,此時再在工作區直接修改代碼,改完之后進行git add,再執行本git commit --amend命令,之后git push.
4) 如果我們不知道我們需要的版本與現在最近的版本中間隔着 n 個提交,那么我們可以使用git log來查看版本庫中的commit-id,找到我們需要的commit-id后,在終端中執行git reset --hard commit-id,
時這個命令執行完后,運行git log -1 命令我們會發現現在版本庫里最近的一版就是我們需要的那版,此時再在工作區直接修改代碼,改完之后進行git add,再執行本git commit --amend命令,之后git push.
1.4 git commit --help
查看幫助,還有許多參數有其他效果,一般來說了解上述三種即可滿足我們工作中的日常開發了