Bash 通过一个命令创建新文件并将其添加到git版本控制
git中是否有一种方法可以完成与2个shell命令相同的操作:Bash 通过一个命令创建新文件并将其添加到git版本控制,bash,git,shell,Bash,Git,Shell,git中是否有一种方法可以完成与2个shell命令相同的操作: touch somefile git add somefile 在一个命令中?git add将文件从工作树复制到索引中。此过程要求文件存在git add将在索引中使用相同的名称 从技术上讲,git add实际上包括两个步骤: 它必须在存储库数据库中创建或查找包含文件内容的blob对象。如果文件为空,则进入数据库或已在数据库中的对象具有以下哈希: $ git hash-object -t blob --stdin < /dev
touch somefile
git add somefile
在一个命令中?
git add
将文件从工作树复制到索引中。此过程要求文件存在git add
将在索引中使用相同的名称
从技术上讲,git add
实际上包括两个步骤:
$ git hash-object -t blob --stdin < /dev/null
e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
$git散列对象-t blob--stdin
您可以通过运行带有-w
标志的git hash object
来模拟这一点,该标志告诉git在需要时将对象写入数据库,然后返回表示这些内容的hash IDgit add
继续更新索引。此更新包括删除任何具有相同名称的更高阶段条目,并写入阶段零条目。如果文件应标记为读/写,则条目内容为文件的所需模式100644
;如果文件应标记为读/写/执行,则条目内容为100755
、阶段编号(零)、blob哈希ID和路径(表示为UTF-8字符串)git update info
完成第二步,可以使用--index info
(从标准输入读取)或--cacheinfo
(仅限于写入stage zero条目,但这正是您想要的)。有关详细信息,请参阅
这样做而不是触摸文件的问题;git add file
是指,除非您已经知道内容的哈希ID,并且该哈希ID实际上已经存在于git数据库中,否则它仍然需要两个命令:git hash object-w…
和git update index…
。在这种情况下,您最好使用easy命令
(请注意,虽然所有存储库都有空blob,但它们最初并没有空blob。)在文件中写入时,目标是什么?您尝试的内容没有意义…可能是一个看门狗脚本,当它检测到更改时,会触发git add somefile?或者
触摸somefile&&git add somefile
,如果这仅仅是在一次提交中完成的问题。您可以第一个编写一个;)。没有。Git跟踪现有文件,并且没有创建新文件的规定。