チェリーピック

高度な Git

Amanda Crawford-Adamo

Software and Data Engineer

チェリーピックとは?

特定のコミットの変更を別ブランチへ適用

単一コミットのチェリーピック

git cherry-pick <commit-hash>

複数コミットのチェリーピック

git cherry-pick <hash1> <hash2> ..

目的

  • 特定のバグ修正をブランチ間で適用
  • 機能を安定版へロールバック
  • 実験的変更を選択的に適用
  • 失われたコミットを復元
高度な Git

チェリーピック例

main と feature のグラフ。main に 2 つのコミット。feature は最後のコミット後に分岐。

チェリーピック前の main と feature ブランチのログを示す 2 つの画像。

高度な Git

チェリーピックの手順

  1. main ブランチをチェックアウト

    git checkout main
    
  2. feature ブランチのコミット def456 をチェリーピック

    git cherry-pick def456
    

main と feature のグラフ。main に 3 つのコミット。feature は 2 つ目のコミット後に分岐し、さらに 2 つのコミット。main の 3 つ目は feature の最後からのチェリーピック。

高度な Git

チェリーピックの競合解消

コンフリクト解消手順
  1. 競合ファイルを手動で編集
  2. 解決済みファイルをステージに追加 git add <resolved-files>
  3. --continue フラグでチェリーピックを続行
git cherry-pick --continue
チェリーピックの中止

中止するには --abort フラグを使用

git cherry-pick --abort
高度な Git

チェリーピックの適用場面

用途

  1. ホットフィックスの適用
  2. 機能の個別テスト

注意点

  1. 重複コミットが生じることがある
  2. 多用すると履歴が複雑化
  3. 大きな変更はマージやリベースを検討
高度な Git

練習しましょう!

高度な Git

Preparing Video For Download...