Git – cherry-pic – コミットを取り込む

概要

  • git cherry-pickは他のブランチのコミットの一部を今のブランチに取り込む
  • 1つないし複数のコミットを指定可能
  • 結果は自動的にコミットされるが、-nオプションでステージングのレベルに留めることができる

英語の”cherry pick”はサクランボ狩りのことで、いいサクランボを選んで摘むことから、次のような使われ方をするようだ。

  • 自分の気に入ったものだけを選ぶ
  • 選り好みする
  • 品物や人材を厳選する
  • 目玉商品を探し漁る
  • 都合のいいデータ・証拠だけを選んで偽装する

準備

次のような内容のローカルリポジトリーを使う。それぞれのコミットで、対応するファイルが作成される。

cherry-pick実行

mainブランチに、topicブランチのtopic1コミットだけを取り込みたいとする。

mainブランチで、topic1コミットのチェックサムを指定して取り込む。

git cherry-pic コミット指定

結果は以下の通りで、topicブランチのtopic1コミットがmainブランチにマージされている。

暫定的なcherry-pick

-nオプション

コミットせずに確認だけしたい場合は-nオプションを付ける。そうすると、コミットはされずにステージングエリアに上げられた状態で留まる。

ワーキングツリーではファイルは作成されている。

しかしコミットされていないので、ログには反映されていない。

ファイルはステージングエリアにあり、コミット前の状態。

暫定cherry-pickの破棄

暫定的なcherry-pickの内容を破棄したい場合は、addを取り消してファイルを削除する。

まず、git reset HEADaddを取り消す。

そして作成されたファイルを削除。

暫定cherry-pickのコミット

-nオプションによる暫定的なcherry-pickの結果を正式にコミットしたい場合は、git commitを実行する。

ログで確認。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です