git add -N后跟git stash - "无法合并"

时间:2017-05-23 12:38:44

标签: git git-stash

我需要隐藏一组包含新文件的更改 - 没有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?的副本,因为这个问题是如何存储以前添加过的文件。我的问题是存储已添加尚未的文件。)

1 个答案:

答案 0 :(得分:5)

更新 - 进一步的测试显示,具有讽刺意味的是,常规提交效果相对较好。相应修改了推测性措辞......

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

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

在这种情况下的折衷方案是添加文件的空版本(以便使文件不被跟踪的占位符具有内容而不是没有内容的条目) 。然后,您可以将真实文件放在路径中,它将被“修改”而不是“未跟踪”,因此您可以在没有问题-u选项的情况下进行存储。