-
理論
字面解釋的話,git commit -m 用于提交暫存區(qū)的文件,而 git commit -am 用于提交跟蹤過的文件。
【注意】git commit -am可以寫成git commit -a -m,但不能寫成git commit -m -a
定義中出現(xiàn)了 暫存區(qū),跟蹤過的文件等術(shù)語,下面來了解一下他們。

工作目錄下面的所有文件都不外乎這兩種狀態(tài):已跟蹤(tracked)或未跟蹤(untracked)。已跟蹤的文件是指本來就被納入版本控制管理的文件,在上次快照中有它們的記錄,工作一段時間后,它們的狀態(tài)可能是未更新(unmodified),已修改(modified)或者已放入暫存區(qū)(staged)。
-
實例
下面以一個實例來進(jìn)行說明
在項目文件夾中新增一個a.txt文件,該文件處于未跟蹤狀態(tài)(untracked).未跟蹤狀態(tài)的文件時無法提交的。
接下來,使用git add a.txt,使其變成已跟蹤狀態(tài)(tracked)
這時,如果使用 git commit -m 'add a.txt'就可以順利提交了
-
但是,git commit -m和 -am 的區(qū)別到底在那里呢?在于文件修改后的處理
如果這時,我們向a.txt中添加(修改)內(nèi)容 ‘我很帥’,這時,a.txt文件是還是處于跟蹤狀態(tài)(tracked)的,但是未暫存狀態(tài)(unstaged)
這時,如果使用 git commit -m 是無法提交修改后的文件的 (需要再次-add,-commit),提交的還是最開始的空白的a.txt文件。
-
而如果使用 git commit -am ,則可以省略 git add a.txt(使a.txt文件狀態(tài)變成 staged),因為 git commit -am 可以提交跟蹤過的文件,而a.txt已經(jīng)跟蹤過了(-am = add + commit)
-a和-am的區(qū)別.PNG