演習:git cherry-pick

2021年7月2日

git の チェリーピック (cherry-pick 特定のコミットを指定した別のブランチにコピーする) の演習をしました。 GitHub Desktop を使用しますが、コンフリクトが発生した場合は、git コマンドでの操作が必要です。

環境は以下の通りです

  • Windows 10 Home
  • git version 2.29.2.windows.2
  • GitHub Desktop Version 2.9.0 (x64)

実施したことは次のとおりです。

  • 1 コミットのコピー先になるブランチの作成
    • ブランチを作成するブランチを選択する
    • ブランチを開始するコミットを右クリックして、"Create branch from commit" を選択する
  • 2 チェリーピックする(コンフリクトなし)
    • コピーしたいコミットのあるブランチを選択する
    • コピーしたいコミットをコピー先のブランチにドラッグアンドドロップする(図1)
      • ドラッグしたコミットを "Current branch"に持っていくと、ブランチの一覧が開く
      • コピーしたいブランチにコミットをドラッグする
    • "Push origin" をクリックしてプッシュする
      • "Undo" をクリックして取り消すことも可能(図2)
        • ただししばらく経過すると消える
(図1) コピーしたいコミットをコピー先のブランチにドラッグアンドドロップする

(図2) “Undo" をクリックして取り消すことも可能
  • 3 チェリーピックする(コンフリクトあり)
    • コピーしたいコミットをコピー先のブランチにドラッグアンドドロップするところまで 2 と同じ
      • コンフリクトのダイアログが表示される(図3)
    • コンフリクトしたファイルを適当なエディタで修正する
    • ダイアログにフォーカスを戻して、 "No conflicts remaining"と表示されていることを確認する(図4)
    • コンソール(git bash)で以下を行う
      • git add 修正したファイル
      • git cherry-pick –continue
        • コミットログの編集を行う
    • ダイアログの X をクリックしてダイアログを閉じる(図5)
      • "All conflicts resolved" と表示されている
    • "View conflicts" と表示される(図6)
      • コンフリクトは解消されているのでクリックしても何も表示されない
    • "Push origin" をクリックしてプッシュする
(図3) コンフリクトのダイアログが表示される

(図4) ダイアログにフォーカスを戻して、 “No conflicts remaining"と表示されていることを確認する

(図5) ダイアログの X をクリックしてダイアログを閉じる

(図6) “View conflicts" と表示される