git commit 主要是將暫存區里的改動提交到本地的版本庫。每次使用git commit 命令我們都會在本地版本庫生成一個40位的哈希值,這個哈希值也叫commit-id。
commit-id在版本回退的時候是非常有用的,它相當於一個快照,可以在未來的任何時候通過與git reset的組合命令回到這里。
1. git commit -m "message"
-m 參數表示可以直接輸入后面的message,如果不加 -m 參數,那么是不能直接輸入message的,而是會調用一個編輯器一般是vim來讓你輸入這個message。
當我們想要提交的message很長或者我們想描述的更清楚更簡潔明了一點,我們可以使用這樣的格式:
2. git commit -a -m "message"
-a 參數表示,可以將所有已跟蹤文件中的執行修改或刪除操作的文件都提交到本地倉庫,即使它們沒有經過git add添加到暫存區。
注意,新加的文件(即沒有被git系統管理的文件)是不能被提交到本地倉庫的。建議一般不要使用-a 參數,正常的提交還是使用git add先將要改動的文件添加到暫存區,再用git commit 提交到本地版本庫。
3. git commit --amend
git commit --amend 也叫追加提交,它可以在不增加一個新的commit-id的情況下將新修改的代碼追加到前一次的commit-id中。
1)假如現在版本庫里最近的一版正是我們想要追加進去的那版,此時是最簡單的,直接修改工作區代碼,然后git add,之后就可以直接進行git push到服務器,中間不需要進行其他的操作如git pull等。
2)如果現在版本庫里最近的一版不是我們想要追加進去的那版,那么此時我們需要將版本庫里的版本回退到我們想要追加的那一版。
2.1> 第一種,如果我們知道我們需要的版本與現在最近的版本中間隔着 n 個提交,那么我們可以直接使用git reset --hard HEAD~n 命令,執行完后運行git log -1 命令我們會發現現在版本庫里最近的一版就是我們需要的那版,此時再在工作區直接修改代碼,改完之后進行git add,再執行本git commit --amend命令,之后git push。
2.2> 第二種,如果我們不知道我們需要的版本與現在最近的版本中間隔着 n 個提交,那么我們可以使用git log來查看版本庫中的commit-id,找到我們需要的commit-id后,在終端中執行git reset --hard commit-id,執行完后運行git log -1 命令我們會發現現在版本庫里最近的一版就是我們需要的那版,此時再在工作區直接修改代碼,改完之后進行git add,再執行本git commit --amend命令,之后git push。
4. git commit --help
查看幫助