我对git还比较陌生,不太明白为什么git commit -a
只会将更改和删除的文件存入暂存区,而不包括新添加的文件。
是否有人能够解释一下为什么会这样,并且为什么没有其他的提交标志可以在一次命令中同时添加文件并提交,参考这里?
另外,hg commit -A则会将新添加和删除的文件都加入到提交中。
我对git还比较陌生,不太明白为什么git commit -a
只会将更改和删除的文件存入暂存区,而不包括新添加的文件。
是否有人能够解释一下为什么会这样,并且为什么没有其他的提交标志可以在一次命令中同时添加文件并提交,参考这里?
另外,hg commit -A则会将新添加和删除的文件都加入到提交中。
Git是用来跟踪 更改 的。 它依靠您告诉它哪些文件很重要需要跟踪。您可以像这样实现所需的效果:
git add . ;git commit -a
确保你的.gitignore
文件已更新。
-a
不是多余的。它确保了删除的内容也被提交至暂存区。 - CB Baileygit add -A && git commit
有什么问题吗?我的意思是,如果存在的话,git commit -A
会有什么优势?(除了少打几个字符之外)。我认为它不存在的原因(如果不仅仅是因为可以像上面提到的那样轻松完成)是,99% 的项目都有至少一个不属于 SCM 存储库的文件,例如配置文件或跟踪数据库版本的文件等。 - Pelle我建议另一种解决方案:使用git commit --interactive -m "您的提交消息"
将显示此菜单。
*** 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
通过简单的按键,可以允许您检查状态、添加未被跟踪的文件等。
我猜答案很简单(但我怀疑我说出来后可能不会受欢迎!)-- 除了开发人员实施时它是如何掉出来的,很可能没有刻意的“为什么”。Git项目的优先级从来不是易用性或用户友好性。
Kelly说得没错,但我认为另一个因素是许多人期望这种行为,因为CVS、Subversion和大多数其他工具都是这样做的。
如果Git提交了新文件,你可能会注意到很久以前你已经提交了.o
文件,更糟糕的是它们可能会影响构建。
为了未来的考虑,您可以采用Ian Clelland提供的解决方案。
git add -A && git commit -m "Your Message"
因为这在评论中不太明显,可以从以下链接了解更多信息:https://dev59.com/H3E95IYBdhLWcg3wMa91#2419270
git commit -A
是因为:1.) 添加新文件相对较少见;大多数其他版本控制系统需要显式的scm add <file>
步骤。2.).gitignore
和类似的文件并不完美,这可能会导致将不想提交的文件添加到提交中。 - Jakub Narębski-a
行为。 - juliangonzalez