2017-08-03 62 views
1

我在通過format-patch創建的「code1」上通過電子郵件發送了一個git修補程序。問題是,發送它的同事顯然與我有不同的目錄結構。我的目錄看起來像當存儲庫目錄結構不同時應用git修補程序

/home 
    /mydir 
    /project 
     /code1 
      /src 
      /obj 
      /bin 
     /code2 
     /code3 

和我的.git坐在/項目。他顯然只有/ code1,這就是他的.git所在的地方。但是,他的/code1看起來和我的/code1完全一樣。

我嘗試申請使用Git時的補丁程序,它失敗

error: src/foo.c: does not exist in index 
error: src/bar.c: does not exist in index 
Patch failed at <new commit message>. 

我已經使用--directory標誌嘗試錯誤,但我得到了同樣的錯誤,只改變了目錄名稱。有沒有辦法做到這一點。

順便說一句,我預計有人會將此標記爲this question的副本,但情況有所不同,並且在那裏給出的解決方案對我沒有幫助。謝謝。

回答

1

git am被設計爲從補丁重新創建原始提交

要重新創建原始提交(用相同的哈希ID和一切),在資源庫做了一定要在庫進行了更改位對位相同的變化。這自然需要你的倉庫與補丁中的倉庫具有相同的佈局(以及通向這一點的父提交)。

由於您的存儲庫具有不同的結構,因此不能使用git am來應用該修補程序。您可以改爲使用git apply,但您必須對路徑名稱有所fu a。請注意,與標準修補程序實用程序一樣,使用-p number選項可以刪除路徑組件,但在這種情況下這不起作用。在這種情況下,您將需要添加某些路徑組件,因此您需要--directory=path選項。

相關問題