2016-11-03 9 views
0

私は2つの異なるGitアカウントに2つのリポジトリがあり、完全に別々のトラックにあります。ポイントは、これらの2つのリポジトリが物を共有していることです。Gitパッチの実行方法は?

基本的には、1つのリポジトリに変更を適用したい場合があります。問題は、フォルダ構造が異なることである:

リポジトリS

RepoS 
|--src 
    |--file1.js 

リポジトリD

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

だから私はRepoS/src/file1.jsの変化を作り、中にそれをパッチを適用したいと思いますRepoD\glib/src/file1.js

は、私が試した:

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

それでもエラーで失敗します:

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. 

は、だから私は(第2ライン)を試してみました:

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

それは2行目に失敗しました

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'を使うときに' Out-File -Encoding ascii'を指定して 'git apply'を試みたところ、' git am'と同じエラーが出ました – Andry

関連する問題