git commit -m与git commit -am

sli*_*000 64 git github

似乎很容易,但我只是不明白.我是我申请的根本.

这是我的工作流程.

git add .
git commit -m "added a new feature some files changed"
git push heroku master
Run Code Online (Sandbox Code Playgroud)

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

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

但如果我这样做

git add .
git commit -am "added a new feature some files changed"
git push heroku master
Run Code Online (Sandbox Code Playgroud)

一切(所有变化)都被推送到Heroku

Dav*_*yon 66

来自文档:

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

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

  • 因为有些文件没有上传.对于当前未被跟踪的已删除/添加的文件,会发生这种情况.通常,您必须执行`git add -u`才能播放"未跟踪"文件.`-am`也会为你做这件事. (10认同)
  • @ slindsey3000你可能正在寻找git add -A和git add --all相同,它与git add不同. (3认同)
  • 那为什么`git commit -am“ x”`可以工作...但是....`git add .``git commit -m“ x”`不起作用? (2认同)

小智 12

我建议,如果你只更改了一个文件,那么你可能会这样做:

git add "Your_file.txt"
git commit -m "added a new feature in a file"
git push heroku master
Run Code Online (Sandbox Code Playgroud)

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

git add .
git commit -m "some files changed"
git push heroku master
Run Code Online (Sandbox Code Playgroud)

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

git commit -am "added a new feature some files changed"
Run Code Online (Sandbox Code Playgroud)

  • git commit -am不会推送,因此您不能替换上述三行。 (3认同)
  • @WilomGfx我认为没有。他的意思是:_您可以添加和提交_不推送;所以他说对了:_用此命令一行_ (2认同)

Nai*_*lid 8

它们之间的基本区别在于:

 git commit -m = send log message (don't work without git add )
Run Code Online (Sandbox Code Playgroud)
 git commit -am = git add -a + git commit -m
Run Code Online (Sandbox Code Playgroud)

和 git add -a = 阶段一切


bra*_*wie 5

git commit -am是对 TRACKED(=STAGED) 文件立即暂存和提交的便捷命令。

正如钉子回答的那样,

git commit -am = git commit -a + git commit -m 
Run Code Online (Sandbox Code Playgroud)

git commit -m:提交消息(你可能知道这部分)

git commit -a|git commit --all:

告诉命令自动暂存已修改和删除的文件,但你没有告诉 Git 的新文件不受影响。-来自 git 文档

你没有告诉 Git 的新文件不受影响

粗体部分是重要的部分。

-am标志仅适用于TRACKED修改或删除的

因此,如果您添加新文件并提交-am标志提交,则这些新创建的文件将不会包含在提交中,因为它不会被跟踪(暂存)。

如果您创建新文件并希望使用-am标志来避免使用

git add .
git commit -m "some commit" // reducing one line makes a big difference, I agree
Run Code Online (Sandbox Code Playgroud)

,首先使用git add .和 来暂存这些新命令,您可以使用git commit -am上面两行的命令来代替。