是否可以跳过暂存区并且(也)在单个内置命令行命令中将未跟踪,新文件提交到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'
感谢。
答案 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-tree
和write-tree
非常有用,如果这对你很有吸引力,git core tutorial是一个很好的概述。 / p>
答案 3 :(得分:0)
使用下面的命令将跳过暂存区域,并直接从工作目录中提交。
git commit -a
请注意,您仍然需要添加新的未跟踪文件。