为什么不git commit -a添加新文件?

spl*_*tor 33 git dvcs commit

我对git有点新,我不明白为什么git commit -a只有阶段改变和删除文件而不是新文件.

任何人都可以解释为什么它是这样的,为什么没有其他提交标志来启用添加文件和提交一个命令

BTW,hg commit -A将新文件和已删除文件添加到提交中

Kel*_*nch 19

Git是关于跟踪变化的.它依赖于你告诉它哪些文件足够重要跟踪.您可以像这样实现所需的效果:

git add . ;git commit -a
Run Code Online (Sandbox Code Playgroud)

确保您的.gitignore文件已更新.

  • 不,`-a`不是多余的.它确保删除也被暂存. (3认同)
  • 感谢您列出我的选择。我仍然对它还不存在的主要原因感兴趣。我是唯一一个错过它的人吗?我认为这对于新手教程来说更为重要 - “在这里,你看 - 我编辑了一个文件,现在在一个命令中我告诉 git 查看更改的内容并将其添加到存储库。”。我知道我可以编写一个脚本来做到这一点,但在编写教程或向某人展示 git 是多么容易和舒适时,这是一个糟糕的选择。我会尝试考虑提交请求。 (3认同)
  • 选项:1) 将命令组合成一个脚本并使用它而不是基本提交。2) 提交功能请求。3)签出源并自己添加功能。 (2认同)

Gon*_*Cao 11

我建议另一个解决方案:使用git commit --interactive -m "your commit message"将显示此菜单

*** Commands ***
  1: [s]tatus     2: [u]pdate     3: [r]evert     4: [a]dd untracked
  5: [p]atch      6: [d]iff   7: [q]uit   8: [h]elp
Run Code Online (Sandbox Code Playgroud)

允许您使用简单的按键检查​​状态,添加未跟踪的文件等.


Mat*_*t R 8

我怀疑答案很简单(但是我怀疑我会说它会受欢迎!) - 除了开发人员实施它之外,它可能没有故意"为什么".Git项目的优先级从未出现在易用性或用户友好性上.


Jas*_*ith 6

凯利是正确的,但我认为另一个因素是很多人都期望这种行为,因为CVS,Subversion和其他大多数工具都是这样做的.

如果Git提交了新文件,您可能会注意到.o很久以前就已经提交了文件,更糟糕的是它们可能会损害构建.

  • 我不希望它是默认值,但我希望它允许我这样做。我可以做git add。,为什么不让我做为git commit命令的一部分呢? (2认同)

The*_*bee 5

为了将来,您可以坚持使用Ian Clelland的这个解决方案,

git add -A && git commit -m "Your Message"
Run Code Online (Sandbox Code Playgroud)

因为从评论中不会太明显 /sf/answers/169348931/