git commit命令詳解
按照git的步驟,要提交一個新的檔案,或者一個修改過的檔案分3步
第1步:將檔案放入版本庫的目錄(貌似說的是廢話)
第2步:用 git add 檔名(最好是全英文,尤其是在windows下)
第2.5步 用git status 命令 檢視狀態(這一步是良好的習慣,但不是必要,這樣在修改、刪除或者新建的檔案比較多的時候能夠避免錯誤)
這裡具體講解一下,狀態主要分為三種狀態
1)Untracked files → 檔案未被跟蹤; (即沒有用add命令的情況)
2)Changes to be committed → 檔案已暫存,這是下次提交的內容;(用add命令之後或者檔案被修改了再用add命令)
3) Changes bu not updated → 檔案被修改,但並沒有新增到暫存區。如果 commit 時沒有帶 -a 選項,這個狀態下的檔案不會被提交。(檔案被修改但沒有用再次add命令)
$git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # new file: file2 # # Changed but not updated: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes inworking directory) # # modified: file # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # file3
上面程式碼給出的就是這三種狀態
從中我們可以看到,如果只將所有被修改或者已刪除的且已經被git管理的文件提交倒倉庫中。如果只是修改或者刪除了已被Git 管理的文件,是沒必要使用git add 命令的。
第三步:用git commit 命令提交 這裡有篇文章講解的比較好可以參考http://www.cnblogs.com/eddy-he/archive/2012/03/22/git_commit.html
這裡有幾個命令需要區分
git commit 與 git commit -a
git commit 提交的是暫存區裡面的內容,也就是 Changes to be committed 中的檔案。
git commit -a 除了將暫存區裡的檔案提交外,還提交 Changes bu not updated 中的檔案。
如果直接執行 git commit 或者 git commit -a 則會進入編輯器進行描述此次更新的註釋
一般來說預設是nano編輯器
修改的話有兩種方式
一種用命令列git config --global core.editor vim 則修改成vim編輯器,主要對當前使用者有效
還有一種是修改配置檔案:開啟.git/config檔案,在core中新增 editor=vim即可。(.git目錄的東西一般來說謹慎修改,負責會讓版本庫出現錯誤,尤其是windows下!!!!)
一般來說大家都不想進入編輯器中進行修改
所以常用的命令號為 git commit -m 或者 git commit -a -m
具體的例項為
$git commit -a -m "commit info"
這個程式碼與gitcommit相比快捷方便,但是就是commit資訊格式無法控制。
還有一個十分重要的命令列
git commit --amend 一般的網上說明該命令列主要用於修改最後一次commit的資訊。
其實還有一個很重要的作用就是修改或取消上一次的提交內容,用於補充檔案具體例子如下
比如我們發現漏了 file3 沒有提交,我們可以執行一下操作:
$git status # On branch master # Untracked files: # (use "git add <file>..." to include in what will be committed) # # file3 nothing added to commit but untracked files present (use "git add" to track) $git add file3 $git commit --amend [master 671f5cc] commit --amend, add file3 files changed, 2 insertions(+), 0 deletions(-) create mode 100644 file2 create mode 100644 file3 $git status # On branch master nothing to commit (working directory clean)
當然如果最後一次commit的資訊在想修改之前已經push上去了,那。。。。。。
也不是不能修改……比如這篇文章就講解了怎麼修改http://blog.csdn.net/tangkegagalikaiwu/article/details/8542827
不過最好不要出現這樣的情況
最後,感謝
http://blog.csdn.net/hudashi/article/details/7664409
http://www.cnblogs.com/eddy-he/archive/2012/03/22/git_commit.html
文章的作者,部分內容轉載自上述兩篇