13

是否可以在单个内置命令行命令中跳过暂存区域并(也)将未跟踪的新文件提交到 git?如果没有,有什么替代方案?

http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository

为 git commit 命令提供 -a 选项会使 Git 在执行提交之前自动暂存已跟踪的每个文件,让您跳过 git add 部分:

$ git commit -a -m 'added new benchmarks'

谢谢。

4

4 回答 4

19

使用单个内置命令行命令?不。

使用两个命令:

git add -A
git commit

使用自定义别名:

将此添加到.gitconfig

[alias]
   commituntracked = "!git add -A; git commit"

然后你可以做

git commituntracked
于 2013-04-17T20:00:41.083 回答
3

这对大师来说似乎很微不足道,但对我来说是一个小启示(我承认) - 至少我现在才第一次使用它并且它可以工作(没有自定义别名):只需使用分号就可以;了作为单线:

git add --all; git commit -m "some informative commit message"

于 2013-04-17T21:27:19.647 回答
2

是的。至少有两种主要的方法可以做到这一点。首先,您不必使用“the”暂存区,您可以拥有任意数量的暂存区——随心所欲地设置GIT_INDEX_FILE=/path/to/private/index和执行;其次,您可以直接自己构建提交。它甚至不难。

Git 的存储库核心处理 blob、树和提交对象(这里也不太相关,注释和注释标签)。转储对象的 git 命令是git cat-file -p.

一个blob只是一个bag-o-bits。使用 向存储库添加一个git hash-object -wfilename,它将打印该文件中 blob 的 ~true name~ 并将 blob 添加到存储库。树将对象与文件系统名称联系起来。git mktree使用;将一个添加到存储库 要查看要喂它什么,请使用 eg 打印一棵树git cat-file -p HEAD^{tree}。添加一个提交到存储库git commit-tree,基本上,你说,设置一些环境变量,并在标准输入上提供一个提交消息。git commit-tree -pmom-pdad sometree

这就是真正需要的。如果您想进一步使用树和分段进行切片和切块read-tree并且write-tree可能非常有用,如果这对您很有吸引力,那么git 核心教程是一个很好的概述。

于 2013-04-17T22:05:34.763 回答
0

使用下面的命令跳过暂存区域并直接从工作目录提交。

git commit -a

请注意,您仍然需要添加新的未跟踪文件。

于 2020-04-28T12:20:44.510 回答