我需要存储一组包含新文件的更改 - 没有 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? 的副本,因为该问题是如何存储以前添加的文件。我的问题是存储尚未 添加的文件。)
最佳答案
更新 - 进一步的测试表明,具有讽刺意味的是,定期提交的效果相对较好。投机性措辞相应修改...
问题似乎在于 git 如何处理没有内容的索引条目。虽然它会围绕占位符条目提交,但它的某些内容不能被 stash
接受。 (我可以想到多种潜在的挑战。最明显的是,存储是由提交组成的 - 在数据库中 - 在这种情况下无法表示“计划提交”。错误消息表明致命问题在其他地方,可能与 WIP 提交的组装方式有关。)
您可能只需要 git add
文件(不使用 -N
选项)。 不的唯一原因是,如果您有其他暂存更改并且不希望该文件的状态在其他更改中混淆。
在这种情况下,折衷方案是添加一个空版本的文件(这样防止文件未被跟踪的占位符具有空内容,而不是没有内容的条目) .然后您可以将真实文件放在路径中,它将被“修改”而不是“未跟踪”,因此您可以在没有问题的 -u
选项的情况下进行存储。
关于git add -N 后跟 git stash - "Cannot merge",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44135104/