git 添加 -N 后跟 git 存储 - "Cannot merge"

git add -N followed by git stash - "Cannot merge"

我需要存储一组更改,其中包括一个新文件 - 没有 deleting ignored directories

所以我尝试了这个:

git add --intent-to-add myNewFile.txt
git stash

结果是:

error: Entry 'myNewFile.txt' not uptodate. Cannot merge.
Cannot save the current worktree state

如何隐藏修改后的文件以及一个或多个选定的新文件,但不影响任何其他文件或目录(尤其是 .gitignore 中的文件或目录)?

(这不是 how can I git stash a specific file? 的副本,因为该问题是如何存储以前添加的文件。我的问题是存储 尚未添加的文件 已添加。)

UPDATE - 进一步的测试表明,具有讽刺意味的是,定期提交的效果相对较好。投机性措辞相应修改...


问题似乎在于 git 如何处理没有内容的索引条目。尽管它会围绕占位符条目提交,但 stash 不能接受它的某些内容。 (我可以想到多个潜在的挑战。最明显的是存储由提交组成 - 在数据库中 - 并且在该上下文中无法表示 "plan to commit" 。错误消息表明致命问题在其他地方,可能与 WIP 提交的组装方式有关。)

您可能只需 git add 编辑文件(不使用 -N 选项)。 的唯一原因是,如果您有其他分阶段更改并且不希望该文件的状态在其他更改中混淆。

在这种情况下的折衷方案是添加一个空版本的文件(这样防止文件未被跟踪的占位符具有 内容而不是没有内容的条目)。然后你可以把真正的文件放在路径中,它将是 "modified" 而不是 "untracked",所以你可以在没有问题的 -u 选项的情况下存储。