2013-11-09 149 views
30

看起來很簡單,但我只是不明白。我在我的應用程序的根源。git commit -m vs git commit -am

這是我的工作流程。

git add . 
git commit -m "added a new feature some files changed" 
git push heroku master 

這通常起作用。我的所有更改都被推送。

但有時我有我改變文件,但是當我推到Heroku的變化是不是有一個FILE ...但是對於大多數文件的變化是有...

但如果我

git add . 
git commit -am "added a new feature some files changed" 
git push heroku master 

一切(所有更改)都推到Heroku的

+0

你能舉出哪些文件沒有被捕獲的例子嗎?它是一個你已經刪除的文件嗎?有時你需要做'git add。 - 更新「來捕捉這些。 – helion3

+0

@BotskoNet - 該文件是我的Rails應用程序中的CSS文件。出於某種原因,當我編輯該文件時,更改不會推送到Heroku。這發生在之前,我只是不明白爲什麼。 – slindsey3000

+0

也許這會幫助你。 [那些之間不同] [1] [1]:http://stackoverflow.com/a/15419846/3962576 – Reven

回答

33

the docs

git commit -a 在提交之前自動登臺所有跟蹤的修改文件如果您認爲git add工作流程的階段是 太麻煩,Git允許您使用-a選項跳過該部分。 這基本上告訴Git在任何「跟蹤」 的文件上運行git add,即任何在上次提交併已被修改的文件。如果你想要 ,這允許你做更多的Subversion風格的工作流程,只需編輯文件然後運行git commit -a當你想要拍攝所有已更改的內容時。儘管如此,你仍然需要 運行git add來開始跟蹤新文件,就像Subversion一樣。

使用選項-am可以在一個命令中添加和創建提交消息。

+0

那麼,爲什麼'git的承諾-am 「X」'工作......不過。 ...'git add。''git commit -m「x」'不起作用? – slindsey3000

+8

因爲你的一些文件沒有上演。這發生在刪除/添加的文件當前不被跟蹤。通常,您必須執行'git add -u'才能將未跟蹤的文件分級。 '-am'也會爲你做到這一點。 –

+1

@ slindsey3000您可能正在尋找git add -A,它與git add --all相同,與git add不同。 –