1. ホーム
  2. git

[解決済み] パッチを適用する際に、コンフリクトを解消する方法はありますか?

2022-04-28 22:58:42

質問

Windowsを使用しています。

様々な理由により、異なるsvnブランチの複数のgitインスタンスを持っています。

多くの場合、リポジトリAで問題を修正し、パッチを生成し、リポジトリBに適用したいと思います。これは、競合がある場合を除き、うまくいきます。

リベースの際には、フォルダを右クリックして、tortioseGitを使って解決オプションを選択するだけです。これで、コンフリクトを解決するための素晴らしいGUIが表示されるようになりました。

リジェクトされたパッチチャンクでこれを実現する方法はありますか?

現在、私が行っているパッチの作成・適用方法は以下の通りです。

git format-patch master --stdout > c:\\patch\\file.patch
git apply --reject --ignore-space-change --ignore-whitespace c:\\patch\\file.patch

解決方法は?

パッチを生成するには、次のようにします。

git format-patch --stdout first_commit^..last_commit > changes.patch

さて、パッチを適用する準備が整ったら。

git am -3 < changes.patch

その -3 は、競合があれば三方向のマージを行います。このとき git mergetool GUI を使いたい場合、あるいは vim を使って手動でファイルをマージしたい場合 (標準の <<<<<< , |||||| , >>>>>> 競合の解決)。