2016-11-03 83 views
0

我有兩個存儲庫位於兩個不同的Git帳戶上,在完全不同的軌道上。關鍵是這兩個存儲庫是共享的東西。如何執行Git補丁程序?

基本上我想申請一個更改到另一個存儲庫。問題是,該文件夾結構是不同的:

版本庫裏

RepoS 
|--src 
    |--file1.js 

庫d

RepoD 
|--lib 
    |--src 
     |--file1.js 

所以我做出RepoS/src/file1.js的變化,並希望將其修補到RepoD\glib/src/file1.js

我想:

git format-patch master -1 -o C:\Users\MyUser\Desktop 
git am -3 <path-to-patch-created-in-line-before> 

它未能在第二行:

Applying: My change title 
Using index info to reconstruct a base tree... 
A  src/file1.js 
Falling back to patching base and 3-way merge... 
No changes -- Patch already applied. 

所以,我想(第二行):

git am -3 <path-to-patch-created-in-line-before> --directory=lib 

仍然失敗,出現錯誤:

Applying: My change title 
Using index info to reconstruct a base tree... 
M  lib/src/file1.js 
Falling back to patching base and 3-way merge... 
No changes -- Patch already applied. 

我該怎麼做?

+0

什麼是錯誤訊息? –

+0

我編輯了錯誤消息 – Andry

回答

0

git am通常從stdin的郵箱申請補丁(注意<)。所以你的情況,你將不得不在另一方面使用

git am --directory=lib < patch-file.patch 

git apply接受補丁文件作爲參數

git apply --directory=lib patch-file.patch 
+0

鑑於Powershell不完全支持輸入重定向,我無法真正應用'git am'。我嘗試過'git apply',但路徑失敗。它說修補失敗'file1.js'沒有更多的信息.​​.. – Andry

+0

如果我使用'--verbose',我可以看到它無法找到代碼片段,但它是無稽之談,代碼片段相同他正在尋找是在文件中... – Andry

+0

我有一種感覺,這是一個編碼問題,不幸的是...文本是在那裏,所以只有解釋給我,因爲'git am'失敗是一些空白或換行符是不同的。在使用'git diff'時,我實際上成功地嘗試了'git apply',同時指定'Out-File -Encoding ascii',並且在'git am'中出現了同樣的錯誤 – Andry