有一个
-a
旗帜
git commit -a
--only
--include
标志(可缩短为
-o
和
-i
git commit --only file1 file2
git commit --include file3
但这些都起作用了
通过
创建一个新的临时索引,正如我在回答您的链接问题时所述。
它们的作用有点神奇,可能是也可能不是你想要的。特别是,这些创建的临时索引文件包括
.git/index.lock
刚出现的
索引,如果提交成功,它将成为
这个
--只有
变体很接近您想要的,有时可能
你想要什么,但有时可能会毁掉一些有价值的东西。
git commit --only file1 file2
首先创建一个新的临时索引,从
HEAD
file1
和
file2
从工作树上,好像
git add file1 file2
. 现在这个临时索引匹配了
头
Git还创建
.git/index.lock
这
临时索引,Git副本
文件1
和
文件2
和以前一样。所以
这
文件1
和
文件2
第一
临时索引主要匹配的索引
头
,但这两个文件除外。如果提交成功,Git会像往常一样更新当前分支,然后删除第一个临时索引,并通过重命名
第二
临时索引,
到
.git/index
. 所以现在的正常指数和以前一样
除了
文件1
和
文件2
已经被它取代了,好像被
.
如果你精心策划了一场
不同的
版本
,它们(当然)现在不在您的工作树中,因为工作树版本是您正在提交的版本
那个特别的版本是
,被
git add
git commit --include file3
git添加
预计起飞时间
文件1
早些时候也许有点不同
属于
文件1
现在在你的工作树中,所以
在实际/常规索引中,与
在里面
头
.
.git/index.lock
,从实际/常规索引复制。然后,Git拷贝
file3
git add file3
现在Git使用临时
.git/index.lock
指数如果此提交成功,Git会像往常一样更新当前分支,然后从中重命名临时索引
.git/index.lock
.git/索引
. 因此,现在实际/常规索引仍然具有
您先前添加的(可能与
文件1
在工作树中,但与旧的提交不同
文件1
),加上
你通过
git commit --include
.