git commit -am是多余的,如果我做git之前呢?

运行git add .是多余的git add . 然后git commit -am "commit message"

我可以只运行git add . 然后git commit -m "commit message"或者,也可以只是git commit -am "commit message"

Git add + git commit -m将只提交已添加的文件(新的和之前的跟踪文件),但是git commit -am将提交所有跟踪文件的更改,但不会添加新文件。

如果您删除了任何跟踪的文件,那么运行git commit -am并不是多余的。 请参阅下面的选项的进一步解释。

只要你在根目录下,你想要添加所有新的文件,修改和删除,你想要3)下面。

1)提交新的文件和修改以前跟踪的文件,但不要添加删除

使用Git <2.0:

 $ git add . $ git commit -m 

使用Git> = 2.0:

 $ git add --ignore-removal . $ git commit -m 

2)提交修改和删除跟踪的文件,但不要添加新的文件

 $ git commit -am 

3)提交新文件和所有更改的跟踪文件(包括修改和删除)。 或者:

使用Git <2.0:

 $ git add . $ git commit -am 

…要么:

 $ git add -A $ git commit -m 

使用Git> = 2.0:

 $ git add . $ git commit -m 

其实, git commit -a并不总是多余的,因为它也会删除文件! 例如,你有两个文件:一个文件被跟踪而另一个没有。 现在你想删除跟踪(到处),并添加未跟踪。

所以你删除跟踪的文件。 如果你只使用git add . 然后git commit它会跟踪新的,但不会删除存储库中的旧文件。

所以你要么执行git rm …要么使用git commit -a

我认为之前的一些答案没有看到git add之后的时期(你原来的问题和一些答案已经被编辑,以便使这个时期更加清晰)。

git add . 将当前目录(和任何子目录)中的所有文件添加到索引(除了由.gitignore忽略的文件)。

git commit-a选项将包括已经被git跟踪的文件的所有更改,即使这些更改尚未被添加到索引。

因此,如果所有的文件已经被git跟踪,那么这两种方法的效果是一样的。 另一方面,如果已经创build了新文件,那么git add .; git commit git add .; git commit会将它们添加到存储库,而git commit -a不会。

git add .; git commit -a git add .; git commit -a确实是多余的。 所有更改已经添加到索引,所以-a什么都不做。

-a开关告诉git将已修改的文件进行添加 – 它代表“全部”而不是“添加”。 如果你不想将新文件中的内容添加到git中,那么你必须在提交之前使用git add添加它。

如果你已经做了一个git add . 那么它已经添加了当前目录中的所有文件,即新文件和修改过的文件。 因此,您不需要再使用-a开关重新播放内容。 所以你可以正确地使用git -m "msg"