1. 程式人生 > 其它 >git commit命令詳解

git commit命令詳解

原文:https://blog.csdn.net/killer1989/article/details/46454005?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-46454005-blog-94442474.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-46454005-blog-94442474.pc_relevant_default&utm_relevant_index=1

 

按照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 in
working 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

文章的作者,部分內容轉載自上述兩篇