一般的に言えば、リベースとは、フィーチャー ブランチを上流ブランチにマージして戻す前に、上流の変更をフィーチャー ブランチに組み込む行為です。
git では、ブランチが作成されてから行われた変更が最初に削除されてバッファリングされ、上流の変更が適用され、次にバッファリングされた変更が適用されるため、プロセスはさらに洗練されています。ここで重要なことは、トランクを機能ブランチにマージすることは、git 用語のリベースではなく、それ以上のことです。git アプローチには多くの利点がありますが、svn ではすべてのコミットをサーバーに保存する必要があるため (svn は分散されていません)、svn できれいに実装することはできませんが、svn で実行できます。
「svn rebase」(git の方法) は次のようになります。
svn cp trunk feature
- 機能とトランクへのコミット
svn cp trunk feature-rebase
svn co feature-rebase
cd feature-rebase
svn merge feature
svn commit
svn rm feature
svn mv feature-rebase feature
- (機能リベース WC に戻る)
svn switch feature
その後、最終的にトランクの作業コピーで、svn merge --reintegrate feature
単にトランクを機能ブランチにマージすることとの違いがわかりますか? この例では、アップストリームの最新のトランクから始めて、機能からの変更をそれにマージします。
トランクへのコミットのいくつかは、別の機能ブランチのトランクへのマージから来る可能性があると想像してください。そのため、トランクに直接コミットすることをまったく推奨していません。