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

时间:2013-11-29 13:44:06

标签: git github

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

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

接着是

git push origin master

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

git add -A

如此处所述:How to commit and push all changes, including deletes?

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

git add -A && git commit

在我的情况下看起来像:

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

现在问题:这个大命令是否正确?有没有办法创建一个新的git命令来同时应用这三个命令?此外:推荐或劝阻这些命令的合并?如果是,请说明原因。


修改

我立刻后悔这个决定:Edit last pushed commit's message

4 个答案:

答案 0 :(得分:11)

对我来说是正确的。

您可以通过执行

为命令创建别名
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"

答案 1 :(得分:3)

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

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

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

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

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

答案 2 :(得分:1)

最近我编写了一个 git-powercommit 脚本,用于提交 Git 存储库中的所有更改。当前它会忽略已删除/创建的文件,但添加此功能应该不难。另一方面,它确实支持丰富的工作流,包括 stash/pull/push 并且还处理子模块。

答案 3 :(得分:0)

如果你反复输入三行感觉不好,你也可以使用GUI工具。 http://www.git-scm.com/downloads/guis 顺便说一句,正如“Stonic”所说,你总是可以创建一个新的git命令。