即git commit -am?
我不知道以后在合并时会有任何反复意见。
答案 0 :(得分:3)
git commit -a
不提交所有文件。相反,它只提交已经受版本控制的所有文件,并且具有未分级的更改(除了已经暂存的文件)。
-a, --all Tell the command to automatically stage files that have been modified and deleted, but new files you have not told Git about are not affected.
这与git add -A
不同,后者添加了所有文件以及其他答案。这将添加所有未跟踪而不会被忽略(请参阅gitignore)。
使用git commit -a
本身并无害处。可能会出现两个问题:
您的提交可能会变得很大,这在搜索回归的原因时会受到阻碍(请参阅git bisect)。为避免这种情况,您应该查看git commit -p
。
您可能会错过未跟踪的文件(只能使用git status
,git add
和您的大脑来避免这种情况。
对于合并,git根据文件中的各个更改执行合并。因此,一次提交中有多少文件无关紧要。但是,通常使用较小的提交会导致每个文件的更改次数减少,从而使合并变得更容易。
答案 1 :(得分:1)
您不希望目标文件,可执行文件(构建结果,即已编译的二进制文件)和备份文件(例如foo.html~
)被git
提交。
所以你应该有一个.gitignore
文件,你应该尽早设置它。
另见this
使用.gitignore
git commit -a -m ....
足够好{{1}}是明智的。我经常这样做。
答案 2 :(得分:0)
这取决于您在工作目录中的内容。
当你只有版本控制下的源代码和其他文件时,它不会有问题。但是在许多实际项目中,您在工作目录中累积了各种工件,您不希望在版本控制下(特别是当它们是二进制文件时)。设置.gitignore文件,列出您在版本控制下不需要的任何文件可以提供帮助。
此外,您有时会同时处理多个功能,但您是一个草率的git用户,忘了为每个功能创建一个分支。在这种情况下,您可能希望单独提交这两个功能。这意味着您要创建两个手动添加必要文件的提交。