如何将所有新的/修改过的文件添加到git中,无论在哪里?(类似于 `git add -A` 或者对于新文件的 `git commit -a`)

3

是否有相当于 git commit -a 对于暂存新文件的命令?

git add -A 就是这种行为,但只有在您从存储库的根目录调用它时才会这样。否则,它只会添加子目录中的文件。

或者是否不存在这样的内置功能,使得编写最简单的程序成为可能,例如 git add -A $(git rev-parse --show-toplevel)

1个回答

1

您可以使用 Git 内置的 别名,这包括调用 shell 脚本的功能。


1
具体来说,像这样的别名,可以通过git aa调用(“aa”代表“add all”):git config --global alias.aa '!sh -c "git add -A $(git rev-parse --show-toplevel)"' - Christopher
@Christopher:嗯,看起来更简单了。文档声称:“...(当前,截至git 1.5.6.1)非git别名是从存储库的顶级目录执行的。”因此,git config --global alias.add-a '!git add -A'就足够了(使用'避免shell解释!)。 - ninjagecko
@mschonaker:谢谢,我选择了 git config --global alias.c '!git add -A && git status && read -p "Press any key to type commit message; press ctrl-C to abort" && git commit',这将在 [alias] 中生成一个 c = "!git add -A && git status && read -p \"Press any key to type commit message; press ctrl-C to abort\" && git commit" 的条目。 - ninjagecko
1
@ninjagecko 这是一个我不知道的好发现。你也可以尝试一下 git add -p。它会打开一个交互式会话,让你添加代码块,而不是整个文件。 - Christopher
@ninjagecko 不用谢。那正是我想到的 shell 命令 :P - Martín Schonaker
记录一下,由于 git status 已经在提交信息中了,所以现在我使用的是 !git add -A && git commit(不过这个命令在某些编辑器中可能没有语法高亮)。(另外,有些 shell 可能无法处理前面例子中的 read -p "...",这时需要像 Christopher 最初建议的那样使用 !bash -c "..." 来处理 bashism。) - ninjagecko

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