Git命令提交所有更改,包括删除或创建的文件



git已经跟踪的文件进行更改后,我通常会执行:

git commit -a -m "a message describing what you did"

然后是

git push origin master

提交,然后将所有更改推送到我的Github帐户。但是,第一个命令不适用于提交添加或删除的文件。要做到这一点,我必须首先键入:

git add -A

如前所述:如何提交和推送所有更改,包括删除?。

在另一个问题中,Git使用单个命令提交所有文件,接受的答案表明,应用完整提交(即:包括添加或删除的文件,而不仅仅是编辑的文件)然后推送的唯一方法是将它们与&&命令组合,如下所示:

git add -A && git commit

在我的情况下,它看起来像:

git add -A && git commit -a -m "a message describing what you did" && git push origin master

现在是问题:这个大命令正确吗?有没有办法创建一个新的git命令来同时应用这三个命令?此外:这种命令合并是建议还是不鼓励?如果是,请说明原因。


编辑

我立即后悔这个决定:编辑最后一次推送的提交';的消息。

在我看来是正确的。

您可以通过执行为命令创建一个别名

git config --global alias.commitall '!func(){ git add -A && git commit -am "$1" && git push origin HEAD; }; func'

然后您可以通过输入提交所有更改

git commitall "a message describing what you did"

是的。这个大命令实际上是正确的。它将允许您提交repo中给定目录内的所有内容,包括新创建/未跟踪的文件。

是的,您可以创建一个新的git命令(实际上是一个别名),如下所示:

[alias]
acp = "!f(){ git add -A && git commit -am "$1" && git push origin master; };f"

上面的别名必须进入全局git配置(位于~/.gitconfig)中标记为[alias]的部分。现在,您可以编写类似于:git acp <message>的内容来运行上面的命令。

绝对建议合并命令,这也是*nix提供的功能。但是,在当前情况下,请确保您确实希望在一个步骤中执行所有这些操作。Git假设您希望选择性地添加更改。

最近我写了一个git powercommit脚本,它提交git存储库中的所有更改。目前,它忽略删除/创建的文件,但这个功能应该不难添加。另一方面,它确实支持一个丰富的工作流程,包括隐藏/拉/推,还处理子模块。

如果您对一次又一次地键入三行感到不舒服,也可以使用GUI工具。http://www.git-scm.com/downloads/guis顺便说一句,正如"Stonic"所说,您总是可以创建一个新的git命令。

最新更新