总是在git上提交所有文件是不是很糟糕?

时间:2015-01-07 11:33:12

标签: git

即git commit -am?

我不知道以后在合并时会有任何反复意见。

3 个答案:

答案 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本身并无害处。可能会出现两个问题:

  1. 您的提交可能会变得很大,这在搜索回归的原因时会受到阻碍(请参阅git bisect)。为避免这种情况,您应该查看git commit -p

  2. 您可能会错过未跟踪的文件(只能使用git statusgit add和您的大脑来避免这种情况。

  3. 对于合并,git根据文件中的各个更改执行合并。因此,一次提交中有多少文件无关紧要。但是,通常使用较小的提交会导致每个文件的更改次数减少,从而使合并变得更容易。

答案 1 :(得分:1)

您不希望目标文件,可执行文件(构建结果,即已编译的二进制文件)和备份文件(例如foo.html~)被git提交。

所以你应该有一个.gitignore文件,你应该尽早设置它。

另见this

使用.gitignore git commit -a -m ....足够好{{1}}是明智的。我经常这样做。

答案 2 :(得分:0)

这取决于您在工作目录中的内容。

当你只有版本控制下的源代码和其他文件时,它不会有问题。但是在许多实际项目中,您在工作目录中累积了各种工件,您不希望在版本控制下(特别是当它们是二进制文件时)。设置.gitignore文件,列出您在版本控制下不需要的任何文件可以提供帮助。

此外,您有时会同时处理多个功能,但您是一个草率的git用户,忘了为每个功能创建一个分支。在这种情况下,您可能希望单独提交这两个功能。这意味着您要创建两个手动添加必要文件的提交。