是否可以在 git 中开始跟踪文件而不将它们添加到索引中?
我有新文件,我想在 . 中生存git clean
,但可能会在下一次提交之前更改。我现在只是将它们添加到索引中,然后在提交之前再次添加它们吗?
是否可以在 git 中开始跟踪文件而不将它们添加到索引中?
我有新文件,我想在 . 中生存git clean
,但可能会在下一次提交之前更改。我现在只是将它们添加到索引中,然后在提交之前再次添加它们吗?
似乎您正在寻找git add --intent-to-add
(或git add -N
)。从官方git add
文档:
-N --intent-to-add
仅记录稍后将添加路径的事实。路径的条目被放置在没有内容的索引中。除其他外,这对于显示此类文件的未暂存内容
git diff
并使用git commit -a
.
请参阅git add --intent-to-add 或 -N 做什么以及何时使用?问题以获取更多信息。
您可以使用 暂存文件git add
,然后git reset
在提交之前使用它们。
(itaadd -N
,“intent to add”,为了“开始在 Git 中跟踪文件而不添加到索引”)的问题是:
由于意图添加条目的实现细节,
- 当前的“
git diff
”(即没有树形或--cached
参数)将显示 ita 文件中的更改,但它不会将该文件标记为新文件,- 而“
diff --cached
”会将文件标记为新文件,同时将其内容显示为空。
Git 2.19(2018 年第三季度)改变了这一点;因为“ git diff
”比较索引和工作树。
对于使用意图添加位添加的路径,该命令将其全部内容显示为已添加,但路径本身并未标记为新文件。
它们现在默认显示为新的。
请参阅Nguyễn Thái Ngọc Duy ( )的提交 cff5dc0、提交 8fc8f05、提交 0231ae7、提交 ba4e356(2018 年 5 月 26 日) 。(由Junio C Hamano 合并 -- --在提交 ac997db中,2018 年 6 月 25 日)pclouds
gitster
在 Git 2.19 之前:
$ git diff | $ diff --cached --------------------------------|------------------------------- diff --git a/new b/new | diff --git a/new b/new index e69de29..5ad28e2 100644 | new file mode 100644 --- a/new | index 0000000..e69de29 +++ b/new | @@ -0,0 +1 @@ | +haha |
当前输出错误的一个证据是,
git diff
无法应用“”(带有 ita 条目)的输出,因为它假定在应用之前存在空文件。打开
--ita-invisible-in-index
(commit 425a28e,commit b42b451 Oct. 2016, Git 2.11.0)可以解决这个问题。结果是“新文件”行从“git diff --cached
”移动到“git diff
”。$ git diff | $ diff --cached --------------------------------|------------------------------- diff --git a/new b/new | new file mode 100644 | index 0000000..5ad28e2 | --- /dev/null | +++ b/new | @@ -0,0 +1 @@ | +haha |
此选项在默认情况下处于启用状态,
git-status
但我们需要在重命名检测代码中进行更多修复(提交 bc3dca0,2018 年 1 月,Git 2.17.0)。幸运的是,我们不需要为diff.c
(wt-status.c
使用自定义的)中的重命名检测代码做任何其他事情。
在 Git 2.28(2020 年第三季度)中,“ git diff-files
”被教导说标记为意图添加的路径是新文件,而不是从空 blob 修改。
请参阅Srinidhi Kaushik ( ) 的commit feea694(2020 年 6 月 20 日)。(由Junio C Hamano 合并 -- --在提交 298d704中,2020 年 6 月 29 日)clickyotomy
gitster
diff-files
: 将“i-t-a
”文件视为“not-in-index
”签字人:Srinidhi Kaushik
cmd_diff_files
diff-files' command and related commands which call the function
()' 在将工作树与其进行比较时,将“意图添加”文件视为索引的一部分。
这之前在提交0231ae71d3(diff
:默认打开 --ita-invisible-in-index,2018-05-26)和425a28e0a4(diff-lib
:允许将 ita 条目视为“索引中尚不存在”,2016-10- 24) 默认打开选项--ita-invisible-in-index
(在b42b451919 ("diff
: add --ita-[in]visible-in-index", 2016-10-24, Git v2.11.0-rc0 -- merge ) 中引入)。对于
diff-files
(并add -p
因此)将 ita 文件显示为新文件,ita_invisible_in_index
默认情况下也将在此处启用。
警告:如果您在 git diff-filter 中使用排除(小写)和包含(大写),请使用 Git 2.36 (Q2 2022)。