2017-08-03 11 views
1

format-patchで作成した "code1"にgitパッチを電子メールで送りました。問題は、それを送信した同僚が明らかに私とは異なるディレクトリ構造を持っていることです。私のディレクトリはリポジトリのディレクトリ構造が異なる場合にgitパッチを適用する

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

のように見え、私の.gitは/ projectに座っています。彼は明らかに/ code1しか持っておらず、それは彼の.gitが座っている場所です。しかし、彼の/code1は私の/code1と全く同じように見えます。

私はGitの午前にパッチを適用しようとすると、それはディレクトリ名を変更だけで、私は--directoryフラグを使用して試してみましたが、私は同じエラーを取得エラー

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

で失敗します。これを行う方法はありますか?

私は誰かがこれをthis questionの複製としてフラグを立てることを期待していますが、状況は多少異なり、そこに与えられた解決策は私を助けませんでした。ありがとう。

答えて

1

git amオリジナルのコミットを再作成するように設計されていますパッチから。

に元は、リポジトリで行われた変更にビットごとに同一でなければなりませんあなたリポジトリに行われた変更(同じハッシュIDとすべてに)コミット再作成します。これは当然、リポジトリがパッチ内のレイアウトと同じレイアウト(およびこのポイントに至る親コミット)を持つことを当然必要とします。

リポジトリの構造が異なるため、git amを使用してパッチを適用することはできません。代わりにgit applyを使用することもできますが、パス名をちょっと気にしなくてはなりません。標準パッチユーティリティのように、-p numberオプションを使用するとパスコンポーネントを削除できますが、この場合は役に立ちません。この場合、にはいくつかのパスコンポーネントを追加する必要がありますので、--directory=pathオプションが必要です。

関連する問題