« RedmineのWiki機能強化 | トップページ | TortoiseHgでBitBucketのチケットにリンクさせる »

2012/04/24

rebaseのイメージ

@yusuke_kokuboさんのつぶやきでrebaseのイメージがようやく分かったのでメモ。

【元ネタ】
Twitter / @akipii: とても分かりやすい RT @yusuke_kokubo: ブランチのmergeは2つのブランチが合流するのに対して、 rebaseは一方のブランチがもう一方のブランチに(分岐元から派生した分を)吸収するようなイメージをしてる

Rebaseとトピックブランチ: プログラマの思索

mergeは衝突がなければ、派生ブランチをtrunkへ取り込んでくれるが、衝突があれば、マージしてくれない。
rebaseは、trunkへ派生ブランチで育てたパッチを合流するように取り込んでくれる。
つまり、rebaseはtrunkの履歴を壊さず、その履歴の上に派生ブランチの履歴を取り込んでくれる。
入門Git」にもrebaseについて詳しく解説されている。

trunkに派生ブランチのパッチを取り込む時、派生ブランチの全てのコミット履歴を取り込むのではなく、一部のコミット履歴のみつまみ食いして取り込みたい時もある。
Mercurialの場合、transplantというコマンドを使えば、派生ブランチのどのリビジョンを取り込むのか、Yes or No形式で取り込んでくれる。
Gitならcherry-pickを使えばいいらしい。

hg transplantを試してみた - 文殊堂

Subversion, Git, Mercurialそれぞれでのcherrypicking - watawata日記

koie blog : hg transplant

SVNならmergeコマンドしかないけれど、MercurialやGitはマージ作業のコマンドが豊富で、色んな使い方がある。
マージ作業のRedo、Undoができることで、トピックブランチで並行開発するのがとても楽になっている。

CVS、SVNそしてGit、Merucurialに至るバージョン管理の歴史はソフトウェア開発そのものの歴史なのかもしれない。
Mercurialはとても奥が深いので色々調べてみる。

|

« RedmineのWiki機能強化 | トップページ | TortoiseHgでBitBucketのチケットにリンクさせる »

廃止Mercurial」カテゴリの記事

構成管理・Git」カテゴリの記事

コメント

Mercurial は 2.0(@2011-11-01)で graft コマンドが
標準機能として使用できるようになりましたので、
同一リポジトリ内での cherry-picking であれば、
こちらの使用が(公式には)お勧めとなりますね。

http://www.selenic.com/mercurial/hg.1.html#graft

投稿: 藤原克則 | 2012/04/25 01:08

◆藤原さん

Mercurialは触れば触るほどとても面白いです。
Redmine以上に可能性があるような気がしてます。

投稿: あきぴー | 2012/04/28 03:18

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« RedmineのWiki機能強化 | トップページ | TortoiseHgでBitBucketのチケットにリンクさせる »