git add -N 后跟 git stash - "Cannot merge"

标签 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? 的副本,因为该问题是如何存储以前添加的文件。我的问题是存储尚未 添加的文件。)

最佳答案

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


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

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

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

关于git add -N 后跟 git stash - "Cannot merge",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44135104/

相关文章:

Git命令错误

git - 如何查看 "git stash -u"的未跟踪文件

git - 如何覆盖一个存储库的全局 Git 凭据?

git - Composer 从 bitbucket 创建项目

git - 在本地覆盖 Composer 存储库

git - 在一次运行中删除多个分支

git - 为什么 'Save' 在 git stash 手册中不存在

git - 如何仅在本地使用 git 对文件进行版本控制

git - 我可以查看每个存储条目到底包含什么内容吗?

GIT:我是否需要在 checkout 另一个分支之前提交我的分支,那么存储呢?