我有一个补丁,当我尝试用 git am 应用它时会给出以下输出
Checking patch old/filename...
error: old/filename: does not exist in index
在补丁中,旧的/文件名实际上被移动到新的/文件名,但原始文件似乎已经从源代码树中丢失了。
那么错误是什么以及如何解决/变通呢?是否可以忽略它(使用 --reject 或其他)?
最佳答案
补丁不是针对正确的源代码树创建的。
这可能发生的一种方式:
假设您的原始分支(您要应用补丁的分支)有提交:
- 1a -> 1b -> 1c -> 1d
然后克隆这个分支,并进行新的提交:
- 1a -> 1b -> 1c -> 1d -> 1e
提交 1e 包括旧/文件名
现在你在补丁中完成工作,基于第二个分支,而不是原来的分支:
- 1a -> 1b -> 1c -> 1d -> 1e -> 1f
提交 1f 包括重命名 old/filename -> new/filename
现在,如果您为提交 1f 创建补丁,您将无法在提交 1d 之上应用它,因为提交 1e 丢失,其中旧/文件名被添加到索引/存储库。
关于git - 如果 git-am 失败并显示 “does not exist in index” 怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19115772/