2016-11-03 4 views
0

У меня есть 2 репозитория, которые расположены на двух разных учетных записях Git, на совершенно отдельных дорожках. Дело в том, что эти 2 репозитория разделяют вещи.Как выполнить патч Git?

В основном я хотел бы применить изменение в один репозиторий в другой. Проблема заключается в том, что структура папок отличается:

Repository S

RepoS 
|--src 
    |--file1.js 

Repository 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' failed - это то, что некоторые пробелы или разрывы строк различны , Я действительно успешно попробовал «git apply» при указании «Out-File -Encoding ascii» при использовании 'git diff', и там я получил ту же ошибку, что и в' git am' – Andry