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"