私は git-format-patch と git-am を使用して、あるリポジトリから別のリポジトリに変更を適用しています。ファイル構造は同じですが、私が適用しているリポジトリにいくつかの変更があり、ほとんどのパッチがいくつかのハンクに失敗します。しかし、ほとんどのパッチ ハンクは、行番号が多少あいまいな状態で適用されます。
git-am apply
私が非常に厳密に解釈できる限り、これらのパッチはすべて完全に拒否されます。
だから私のワークフローは
$ git am ../the-patch.patch
# Fails because the patch doesn't apply cleanly
$ patch -p1 < ../the-patch.patch
# Applies most of the hunks, leaves .rej files for the ones that conflict
# Fix the conflicting hunks manually
$ git am --continue
コマンド ライン パッチを実行する必要がなく、am コマンドの一部として実行できればよいのですが。
フラグを指定して実行すると、--reject
ファイル内のすべてのハンクを含む .rej ファイルが作成されるように見えますが、これは私が望んでいるものではありません。
--3way
フラグを指定して実行すると失敗します
fatal: sha1 information is lacking or useless (the-file.java).
Repository lacks necessary blobs to fall back on 3-way merge.
Cannot fall back to three-way merge.
これは、これが基づいていた変更セットが、マージ先のリポジトリにないためだと思います。
git-am apply
raw patch コマンドのようにあいまい一致でパッチを作成し、失敗したハンクを含む .rej ファイルのみを作成する方法はありますか?