git commit -m与git commit -am

时间:2013-11-09 15:47:16

标签: git github

似乎很容易,但我只是没有得到它。我是我申请的根本。

这是我的工作流程。

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

这通常有效。我所有的改变都被推了。

但有时我有一个我改变的文件,但是当我推送到Heroku时,这些文件的更改并不存在......但是对于大多数文件而言,更改都在那里......

但如果我这样做

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

所有(所有更改)都被推送到Heroku

4 个答案:

答案 0 :(得分:54)

来自the docs

  

git commit -a 在提交之前自动暂存所有已跟踪,已修改的文件 如果您认为工作流的git add阶段是   太麻烦了,Git允许你用-a选项跳过那个部分。   这基本上告诉Git对任何被“跟踪”的文件运行git add    - 也就是说,您上次提交并且已被修改的任何文件。这允许您执行更多Subversion样式工作流程   你想要的,只需编辑文件,然后运行git commit -a   想要快照所有已更改的内容。你还需要   然而,运行git add以开始跟踪新文件,就像Subversion一样。

使用选项-am可以在一个命令中为提交添加和创建消息。

答案 1 :(得分:11)

我建议,如果您只更改了一个文件,那么您可能会执行以下操作:

git add "Your_file.txt"
git commit -m "added a new feature in a file"
git push heroku master

或者如果您更改了多个文件,那么您可以执行以下操作:

git add .
git commit -m "some files changed"
git push heroku master

同样,您可以使用以下命令在一行上添加和提交所有文件:

git commit -am "added a new feature some files changed"

答案 2 :(得分:0)

git commit -m "first commit" 和 git commit -am "your first commit" 之间的区别在于,在前者中,您需要首先执行 "git add"。而后者不需要。 “-am”标志中的 'a' 告诉 git 首先添加所有更改

答案 3 :(得分:-1)

它正在做两份工作 1)暂存修改后的文件 2)在同一行添加注释

但它不会将文件从 unstage 添加到 stage,即它不工作 $git add 的工作。