1. ホーム
  2. git

[解決済み] あるリポジトリから別のリポジトリにgitパッチを適用するには?

2023-04-09 06:59:29

質問

2つのリポジトリがあります。1つはライブラリのメインリポジトリで、もう1つはそのライブラリを使用するプロジェクトです。

私が従属プロジェクトに修正を加えた場合、そのパッチを上流に戻して適用する簡単な方法が欲しいと思います。

各リポジトリでファイルの場所が違う。

  • メインリポジトリです。 www.playdar.org/static/playdar.js
  • プロジェクト playlick.com/lib/playdar.js

私は git format-patch -- lib/playdar.js を使用し、次に git am に変更しましたが、パッチファイル内の異なるファイル位置がエラーを発生させました。

与えられたファイル上の与えられたコミットからのパッチを、別の場所にある任意のファイルに適用する簡単な方法はありますか?

ボーナスポイントとして、パッチを適用したいファイルが git リポジトリにない場合はどうすればよいでしょうか。

どのように解決するのですか?

パッチファイルを手動で編集するのが面倒な場合、標準のオプション ( git apply , git format-patch と GNU patch ).

  1. -p<n> 削除 n を含むディレクトリをパッチのパスから削除します。

  2. 処理後 -p , --directory=<root> が追加されます。 root を適用前のパッチの各パスに付加します。

では、あなたの例では、元々 static/playdar.js に適用し、それを lib/playdar.js に適用すると、実行されます。

$ cat patch_file | git am     \ 
          -p1                 \ # remove 1 leading directory ('static/')
         --directory='lib/'     # prepend 'lib/'