想定読者
- Git・GitHub初心者
- GitHubの操作でGUIツールの利用を検討している方
- GitHub Desktopを使い始めた方
はじめに
GitHub Desktopは、GitHub公式が提供しているクライアントツールです。(以下、公式ダウンロードリンク)
GUIツールで視覚的・直感的な操作が可能であり、コマンド入力の手間を省くことができます。
ところで、Git・GitHubを使って開発をしている途中で、「別のブランチのこのコミットだけ、自分の作業ブランチに反映させたいな…」と思ったことはないでしょうか?
そのような状況を解決してくれるのが、今回触れるcherry-pickという機能です。
cherry-pickは、別のブランチにある指定のコミットを現在のブランチに反映させてくれます。
今回は、コマンド・GitHub Desktopのそれぞれを用いたcherry-pick方法を紹介します。
前提
- OS:Windows10 21H2
- GitHub Desktopのバージョン:3.0.1 (x64)
(macOS版もあります)
準備物・実現内容
- 作成したレポジトリ:cherry-pick
- 元のブランチ:main
- 別のブランチ:another
- 自分の作業ブランチ:mine
anotherの指定のコミットEの内容をmineに反映させる。
E'になっているのは、コミットのハッシュ値が元のEと異なるからです。
EとE'は別物だけど、内容は同じというイメージです。
コマンドでのcherry-pick実行手順
mineに移動の上、以下のコマンドを実行するとcherry-pick完了です。
$ git cherry-pick 指定のコミットID
ちなみにコミットIDは、次のコマンドで調べることができます。
$ git log
表示される内容のうち、「commit」の文字の横に記載されている長い数字・英字の羅列がコミットIDです。
GitHub Desktopを用いたcherry-pick実行手順
ここからが本題です。
以下の画像のようにGitHub DesktopでCurrent branchをanotherにし、Historyタブを押下します。
指定のコミットEを選択し、そのまま赤矢印の通りにCurrent branchの欄までドラッグします。
この時、まだドラッグ状態は維持したままにしてください。
(なお、複数のコミットを選択することも可能なので、まとめてcherry-pickしたい場合は[shift]キーを押しながら、対象のコミットを範囲選択します。)
すると、次の画像のように各ブランチが表示されるので、mineまでドラッグ&ドロップしてください。
その後、Current branchがmineに自動で切り替わり、cherry-pickしたコミットが反映されていることを確認することができます。
(cherry-pickした内容によってはコンフリクトが発生するので、発生した場合はコンフリクト箇所の修正が必要です。)
問題なければプッシュし、元に戻したい場合は上部に表示されているメッセージ横の「Undo」を押下してください。
これでcherry-pick完了です。
おわりに
ドラッグ&ドロップで直感的にcherry-pickができるのは、すごく便利ですよね!
実は、この機能は1年以上前から備わっていたのですが、恥ずかしながらつい最近になって知りました…
このように、GitHub Desktopはコマンドなしで様々な操作を行うことができるので、実際の開発現場でもとても重宝しています!
しかし、頼りすぎるとコマンドでの操作に慣れることができず、ツールだけでは実行できない操作もあるので、早いうちにコマンド操作にも慣れておくことをおすすめします!
それでは、良き開発ライフを!
参考情報