2013-11-09 137 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不同。 –