84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
麻煩解答下 git commit -m 與 git commit -am 的差別
當修改已經通過git add <change file>将其添加到stage,可以通过git commit -m "<message>"为这所有已经进入stage的改变添加一个commit信息。什么是在stage中?看下面
git add <change file>
stage
git commit -m "<message>"
commit
如果你的文件之前已經提交過,但這次的改動還沒進stage,如下:
可以直接使用git commit -am "",將所有修改,但未進git commit -am "<message>",将所有修改,但未进stage的改动加入stage,并记录commit信息。(某种程度上相当于git add和git commit -m的组合技,前提是被改动文件已经是tracked的改動加入
git commit -am ""
git commit -am "<message>"
git add
git commit -m
tracked
git commit -am "str" #等同于 git commit -a -m "str"
我們運行下
man git commit
來取得a參數的意義即知區別了。
a
OPTIONS -a, --allTell the command to automatically stage files that have been modified and >deleted, but new files you have not told Git about are not affected. 意思是說
OPTIONS -a, --allTell the command to automatically stage files that have been modified and >deleted, but new files you have not told Git about are not affected.
拓展
git add . git commit -m "some str" git push
這三大步,而實際上,你只需要兩個指令就夠了,除非有新的檔案要被加進去。
git commit -am "some str" git push
字面解釋的話,git commit -m用於提交暫存區的文件;git commit -am用於提交跟踪過的文件
要理解它們的區別,首先要明白git的檔案狀態變化週期,如下圖所示
工作目錄下面的所有文件都不外乎這兩種狀態:已追蹤或未追蹤。已追蹤的文件是指本來就被納入版本控制管理的文件,在上次快照中有它們的記錄,工作一段時間後,它們的狀態可能是未更新,已修改或已放入暫存區
下面以一個實例說明
在專案資料夾中新增一個檔案如'a.txt'時,該檔案處於untracked未追蹤狀態。未追蹤狀態的文件是無法提交的
接下來,使用git add a.txt,使其變成已追蹤狀態
這時,如果使用git commit -m 'add a.txt'就可以順利提交了
但是,git commit -m 和 git commit -am的差別在哪裡?在於a.txt檔案修改之後的處理
下面,在a.txt中加入內容'a'
文件a.txt處於已跟踪,但未暫存狀態。這時,如果使用git commit -m是無法提交最新版本的a.txt的,提交的只是最開始空內容的舊版本a.txt
要提交新版本a.txt,即內容為'a'的a.txt,則需要使用git add a.txt,將新版本的a.txt放到staged暫存區,然後才能使用git commit -m進行提交
而如果使用git commit -am,則可以省略git add a.txt這一步,因為git commit -am可以提交跟踪過的文件,而a.txt一開始已經被跟踪過了
總結,使用這兩個指令區別的關鍵就是git add指令
git add指令是個多功能指令,根據目標文件的狀態不同,此指令的效果也不同:可以用它開始追蹤新文件,或把已追蹤的文件放到暫存區,還能用於合併時把有衝突的檔案標記為已解決狀態等
我們需要用git add指令來追蹤新文件,但如果使用git commit -am可以省略使用git add指令將已追蹤文件放到暫存區的功能
當修改已經通過
git add <change file>
将其添加到stage
,可以通过git commit -m "<message>"
为这所有已经进入stage
的改变添加一个commit
信息。什么是在stage
中?看下面如果你的文件之前已經提交過,但這次的改動還沒進
stage
,如下:可以直接使用
,並記錄git commit -am ""
,將所有修改,但未進git commit -am "<message>"
,将所有修改,但未进stage
的改动加入stage
,并记录commit
信息。(某种程度上相当于git add
和git commit -m
的组合技,前提是被改动文件已经是tracked
的改動加入commit
資訊。 (某種程度上相當於git add
和git commit -m
的組合技,前提是被改動檔案已經是tracked
)🎜我們運行下
來取得
自動把目前所有修改和刪除檔案放到堆疊上,但你沒有加入過的不會受影響。a
參數的意義即知區別了。通常我們提交git的時候都是
這三大步,而實際上,你只需要兩個指令就夠了,除非有新的檔案要被加進去。
字面解釋的話,git commit -m用於提交暫存區的文件;git commit -am用於提交跟踪過的文件
要理解它們的區別,首先要明白git的檔案狀態變化週期,如下圖所示
工作目錄下面的所有文件都不外乎這兩種狀態:已追蹤或未追蹤。已追蹤的文件是指本來就被納入版本控制管理的文件,在上次快照中有它們的記錄,工作一段時間後,它們的狀態可能是未更新,已修改或已放入暫存區
下面以一個實例說明
在專案資料夾中新增一個檔案如'a.txt'時,該檔案處於untracked未追蹤狀態。未追蹤狀態的文件是無法提交的
接下來,使用git add a.txt,使其變成已追蹤狀態
這時,如果使用git commit -m 'add a.txt'就可以順利提交了
但是,git commit -m 和 git commit -am的差別在哪裡?在於a.txt檔案修改之後的處理
下面,在a.txt中加入內容'a'
文件a.txt處於已跟踪,但未暫存狀態。這時,如果使用git commit -m是無法提交最新版本的a.txt的,提交的只是最開始空內容的舊版本a.txt
要提交新版本a.txt,即內容為'a'的a.txt,則需要使用git add a.txt,將新版本的a.txt放到staged暫存區,然後才能使用git commit -m進行提交
而如果使用git commit -am,則可以省略git add a.txt這一步,因為git commit -am可以提交跟踪過的文件,而a.txt一開始已經被跟踪過了
總結,使用這兩個指令區別的關鍵就是git add指令
git add指令是個多功能指令,根據目標文件的狀態不同,此指令的效果也不同:可以用它開始追蹤新文件,或把已追蹤的文件放到暫存區,還能用於合併時把有衝突的檔案標記為已解決狀態等
我們需要用git add指令來追蹤新文件,但如果使用git commit -am可以省略使用git add指令將已追蹤文件放到暫存區的功能