commit -a 和 -am的區(qū)別

  • 理論

    字面解釋的話,git commit -m 用于提交暫存區(qū)的文件,而 git commit -am 用于提交跟蹤過的文件。

    【注意】git commit -am可以寫成git commit -a -m,但不能寫成git commit -m -a

    定義中出現(xiàn)了 暫存區(qū),跟蹤過的文件等術(shù)語,下面來了解一下他們。

File Status Lifecycle.png

工作目錄下面的所有文件都不外乎這兩種狀態(tài):已跟蹤(tracked)或未跟蹤(untracked)。已跟蹤的文件是指本來就被納入版本控制管理的文件,在上次快照中有它們的記錄,工作一段時間后,它們的狀態(tài)可能是未更新(unmodified),已修改(modified)或者已放入暫存區(qū)(staged)。

  • 實例

    下面以一個實例來進(jìn)行說明

    1. 在項目文件夾中新增一個a.txt文件,該文件處于未跟蹤狀態(tài)(untracked).未跟蹤狀態(tài)的文件時無法提交的。

    2. 接下來,使用git add a.txt,使其變成已跟蹤狀態(tài)(tracked)

    3. 這時,如果使用 git commit -m 'add a.txt'就可以順利提交了

    4. 但是,git commit -m和 -am 的區(qū)別到底在那里呢?在于文件修改后的處理

      如果這時,我們向a.txt中添加(修改)內(nèi)容 ‘我很帥’,這時,a.txt文件是還是處于跟蹤狀態(tài)(tracked)的,但是未暫存狀態(tài)(unstaged)

    5. 這時,如果使用 git commit -m 是無法提交修改后的文件的 (需要再次-add,-commit),提交的還是最開始的空白的a.txt文件。

    6. 而如果使用 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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容