rebaseのイメージ
@yusuke_kokuboさんのつぶやきでrebaseのイメージがようやく分かったのでメモ。
mergeは衝突がなければ、派生ブランチをtrunkへ取り込んでくれるが、衝突があれば、マージしてくれない。
rebaseは、trunkへ派生ブランチで育てたパッチを合流するように取り込んでくれる。
つまり、rebaseはtrunkの履歴を壊さず、その履歴の上に派生ブランチの履歴を取り込んでくれる。
「入門Git」にもrebaseについて詳しく解説されている。
trunkに派生ブランチのパッチを取り込む時、派生ブランチの全てのコミット履歴を取り込むのではなく、一部のコミット履歴のみつまみ食いして取り込みたい時もある。
Mercurialの場合、transplantというコマンドを使えば、派生ブランチのどのリビジョンを取り込むのか、Yes or No形式で取り込んでくれる。
Gitならcherry-pickを使えばいいらしい。
Subversion, Git, Mercurialそれぞれでのcherrypicking - watawata日記
SVNならmergeコマンドしかないけれど、MercurialやGitはマージ作業のコマンドが豊富で、色んな使い方がある。
マージ作業のRedo、Undoができることで、トピックブランチで並行開発するのがとても楽になっている。
CVS、SVNそしてGit、Merucurialに至るバージョン管理の歴史はソフトウェア開発そのものの歴史なのかもしれない。
Mercurialはとても奥が深いので色々調べてみる。
| 固定リンク
「廃止Mercurial」カテゴリの記事
- GitHubはオープンソースのプロセスを標準化した(2015.06.11)
- 「反復型ソフトウェア開発」はソフトウェア工学の良書(2013.02.09)
- Mercurialに取り込まれたコミュニティ由来の機能一覧(2013.01.12)
- WordやExcelから直接Mercurialへコミットできるアドオンmsofficehg(2012.12.07)
- RedmineでSubversion リポジトリ表示を高速化する方法(2012.11.23)
「構成管理・Git」カテゴリの記事
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 【資料公開】チケット駆動開発の解説~タスク管理からプロセス改善へ #redmine(2022.01.14)
- プログラミングしてる時はでっかいピタゴラ装置を作ってるみたいな感じ(2022.01.09)
- チケット駆動開発のプロセスとチケット管理システムの全体像 #Redmine(2021.12.28)
- 第21回東京Redmine勉強会の感想 #redmineT ~Redmineは業務も組織も包み込む柔軟性がある(2021.11.28)
コメント
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