使用一条命令在Git中进行暂存和提交

43

在Git中是否有一种方法可以一条命令同时暂存和提交文件?例如,我在本地仓库中创建了index.html、位于css文件夹中的styles.css以及位于js文件夹中的script.js文件。现在我想运行一个命令来暂存和提交所有这些文件。我尝试了下面的代码,但它没有起作用。

git commit -a -m "my commit message"

2
这通常是一个非常糟糕的想法:它会引发包含太多内容在提交中的错误。如果您运行 git status,可能跟着是 git diff <file>,最终是 git addgit commit,那么很容易确保提交是合理的。如果您只提交目录中的所有内容,最终将提交可执行文件、生成的 PDF、对象文件、您不想发布的脚本、私钥/密码(是的,这确实发生过!)、带有私人笔记的文件等等。更好的方法是安全第一,谨慎行事。 - cmaster - reinstate monica
3个回答

41

你想要做的是:

git commit -am "Message for my commit"

这将自动添加所有已追踪的文件,您可以在一个命令中输入您的消息。

-a --all
告诉命令自动暂存已修改和删除的文件,但您没有告诉 Git 的新文件不受影响。

-m <msg> --message=<msg>
使用给定的作为提交消息。如果给出多个 -m 选项,则它们的值会作为单独段落进行连接。

https://git-scm.com/docs/git-commit

如果想要暂存并提交未跟踪的文件,您可以:

git add -A && git commit -am 'message'

git add -A ; git commit -am "message" - Charles Roper
请注意,代码中应该有两个“&”而不是一个:“git add -A && git commit -am 'message'”。 - nonthevisor

23

git commit -a ...会自动添加并提交已经在之前提交过且现在被修改或删除的文件。但是它不会影响新文件。

你可以使用别名将git add ...git commit ...组合成一个命令行。但如果这样做,要花时间编写脚本,以避免使用git add . git add -A,因为这会不可避免地导致提交你真正不想提交的文件。


10

您可以通过使用别名来实现。

像这样定义一个别名:

git config --global alias.your-alias '!git add -A && git commit'

然后您可以像普通的git命令一样使用它:git your-alias -m 'commit message'


1
这应该被设置为答案,效果很好。我使用 [alias] ac = !git add -A && git commit,它对我的工作流程非常有帮助 :) - Fumler

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