是否有可能跳过暂存区域并(还)提交未经跟踪的新文件到git?

时间:2013-04-17 19:51:37

标签: git git-add git-untracked

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

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

  

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

     

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

感谢。

4 个答案:

答案 0 :(得分:16)

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

使用两个命令:

git add -A
git commit

使用自定义别名:

将此添加到 .gitconfig

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

然后你可以做

git commituntracked

答案 1 :(得分:3)

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

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

答案 2 :(得分:2)

是。至少有两种主要方法。首先,您不必使用“暂存”区域,您可以拥有任意数量的临时区域 - 设置GIT_INDEX_FILE=/path/to/private/index并按照您的喜好进行操作;第二,你可以直接自己构建提交。它甚至都不难。

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

一个blob只是一个袋子。使用git hash-object -w filename 将一个添加到存储库,它将打印该文件中blob的〜true name,并将blob添加到repo。树将对象绑定到文件系统名称。使用git mktree将其添加到存储库;看看要喂它的东西,打印一棵树,例如git cat-file -p HEAD^{tree}。使用git commit-tree向存储库添加提交,基本上,您说git commit-tree -p mom -p dad sometree ,设置一些环境变量,并在stdin上提供一个提交消息。

这真的是必要的;如果你想进一步切割和切割树木,并且暂存read-treewrite-tree非常有用,如果这对你很有吸引力,git core tutorial是一个很好的概述。 / p>

答案 3 :(得分:0)

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

git commit -a

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