理解何时使用git commit -m和git commit -am

4

我的主要问题在于,是否总是使用git commit -am而不是git addgit commit -m有意义?

我知道-am表示它将添加所有已修改的跟踪文件更改。因此,在我没有添加任何新文件的情况下,运行 git commit -am 而不是 git add 是有意义的,但是这是否被认为是最佳实践呢:

git add .

git commit -am "message"

无论如何?

或者甚至是代替:

git add -A

git commit -am "message"
3个回答

6
“git add”和“git commit -am”会产生相同的效果,但这并不是最佳实践。除非你不想包含任何未被追踪的文件,否则“git add”+“git commit -m”和“git commit -am”是一样的。需要使用“git add”的两种情况是:一、如果您想包括未被追踪的文件;二、如果您不想提交所有更改的内容。第二点尤其是许多人建议不要总是使用“commit -a”的原因:在编写代码一段时间后,您往往有几种不同类型的更改(修复了一些错误、一些无关的重命名、一些调试时的临时更改等)。在这种情况下,有选择地使用“git add”会更好,因为“commit -a”可能会将过多的信息放入一个提交中。但是,如果您确定要提交您所做的所有更改,请继续使用“git commit -a”。

谢谢澄清!有时候我需要那个“啊哈!”的时刻。我正在处理一个非常小的项目,所以当我进行提交时,通常是从上次提交以来发生的每一件事情都提交了一次,这种情况下我已经厌倦了git add -A git commit -m,但我想养成更好的习惯。 - appsecguy

3

我曾经因为使用-am而意外提交了足够多的代码,所以现在一般都避免使用它。使用git add -u将自动暂存相同的变更,然后你可以使用git diff --cached确认是否需要提交这些变更。我的一些同事甚至会始终使用git add -p,以便在暂存之前查看每个差异。

如果我知道自己做出的变更很小,那么我仍然会使用git commit -am来方便提交,但是建议不要将其作为默认习惯。


3
如果您保持.gitignore文件是最新的,那么使用git commit -am就足够了。它是git add -uA <无模式> ; git commit -m "message"的快捷方式。
这是关于git的最佳实践,因人而异。我更喜欢手动添加文件,这样我就有机会在进行更改时审查它们,但您可能不需要这样做。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接