2013-10-01 542 views
9

我有一個修補程序,給出了下面的輸出,當我試圖用git應用它正在如果git-am失敗,「索引中不存在」怎麼辦?

Checking patch old/filename... 
error: old/filename: does not exist in index 

在修補舊/文件名實際上是轉移到新/文件名,但它似乎原來的文件已經丟失來自源樹。

那麼錯誤是什麼以及如何解決/解決它呢?它可以被忽略(與 - 反對或左右)?

回答

3

修補程序不是針對正確的源代碼樹創建的。

的一種方式,這可能會發生:

假設你的原分公司(要應用補丁的一個)的提交:

  1. 1A - > 1B - > 1C - > 1D

然後將該分支被克隆,並提交新制成:

  • 1A - > 1B - > 1C - > 1D - > 1E
  • 提交1E包含舊/文件名

    現在做的工作在補丁,基於所述第二分支,而不是原來之一:

  • 1A - > 1B - > 1C - > 1D - > 1E - > 1F
  • 提交1F包括重命名舊/文件名 - >新/文件名現在

    ,如果你創建了一個補丁用於提交1F,Y ou將無法將其應用於提交1d之上,因爲commit 1e缺少舊/文件名添加到索引/存儲庫的位置。

    +0

    你可以快速檢查一下git所抱怨的文件是否仍然存在。我剛纔遇到了這個問題,文件git抱怨已經被我的同事實際移動了,因此也是這個問題。 Git cherry-pick在這些問題上更聰明,這對我來說非常有用(但你必須通過commit來做到這一點)。 – user3613932

    相關問題