Git を初めて使用するほとんどの人のように、私も git merge と git rebase に適用可能なユース ケースを解読しようとして混乱に陥りました。結果として得られる作業コピーの状態に関しては、同じことが得られると最終的に判断したと思います。また、どちらも同じ競合を引き起こします。これが間違っている場合は、私を啓発するための例を提供してください。
私の見解では、(変更がプッシュまたはプルされていない場合) マージの代わりにリベースを使用する主な利点は、履歴を線形に保つことです。私が本当に理解していないのは、git-rerere を開発する理由です。
マンページから、 git-rerere は、以前に解決した競合を解決しようとしている場合に役立つはずです。これから参照する例は、http://www.kernel.org/pub/software/scm/git/docs/git-rerere.htmlにあります。
プロジェクトのポリシーが、メインラインからトピック ブランチ (Linux カーネルなど) に変更を常にマージしないことである場合、上記の例では、「使い捨て」マージ コミットを作成するように指示されています。基本的に、マスターをトピックにマージし、テストを実行してすべてが機能することを確認してから、「git reset --hard HEAD^」を実行して、本質的にマージ コミットを破棄します。後で、別の「使い捨て」マージ コミットを作成すると、最初の使い捨てマージで既に解決した競合を解決するのに git-rerere が役立ちます。
一時的なマージ コミットを作成するという面倒な作業をすべて行う代わりに、開発者が自分のトピックを master にリベースしない理由を説明してもらえますか? それが git-rebase のポイントではありませんか?変更を取得しますが、マージは避けますか? これは同じことを達成しませんか? また、誰もあなたのトピック ブランチの変更をプルしていないと仮定すると、これははるかに簡単なアプローチではないでしょうか? throw-away-merge+git-rerere ワークフローは本当に、変更がプッシュ/プルされた場合のためのものですか?
最後に 1 つの質問 - Linus は次のように述べていると引用されています。そこにいる...」 定期的なリベースでも、Linus は問題を抱えているでしょうか?