別のリポジトリからチェリーピックする
わたしはGUIのSourcetreeでGitを使っています。
レポジトリ内のブランチ間のチェリーピックは右クリックメニューで簡単にできますが、ほかのリポジトリ(PC内の他のローカルフォルダにあるGitリポジトリ)でおこなった修正を取り込んでチェリーピックするにはひと手間必要です。
その方法について、コマンドを使ったCLIでの操作方法はいろいろと紹介されていますが、GUIのSourcetreeを使った方法はネット上に解説がないようなので、覚書としてここに書いておきます。
Sourcetreeで別レポジトリからチェリーピック
作業の流れは、以下のとおりです。
設定例:
- 現在作業しているリポジトリA
- 取り込みたいコミットのあるローカルリポジトリB
Bをリモートレポジトリとして登録
チェリーピックしたいコミットのあるローカルレポジトリBを、Sourcetreeに「リモート」として登録します。
右上の歯車マークの「設定」>「リモート」画面の「追加」
リポジトリBがあるフォルダの絶対パスを記載して「OK」。残りの設定はデフォルトのままでかまいません。
*なお、「リポジトリBがあるフォルダ」とは、隠しフォルダ「.git」の直上のフォルダです。
追加したリモート(B)からコミット履歴をフェッチ
Sourcetreeの左側のサイドバーの「リモート」セクションに、追加したリモート名が表示されているはずです。
そのリモート名を右クリックし、「フェッチ」を選択。
これにより、元のリポジトリBのコミット履歴が、現在のリポジトリAのSourcetreeのHistoryビューに取り込まれます。
cherry pickしたいコミットを指定
Sourcetreeの履歴(「History」タブ)に、リモートブランチが追加されているはずです。
そのリモートブランチのチェリーピックしたいコミットを右クリックし、チェリーピックを選択→OK。
以上で完了です。
リモートの削除(必要なら)
チェリーピックが完了し、もうローカルリポジトリBを参照する必要がない場合は、リモート設定を削除できます。
- Sourcetreeのメイン画面の右上にある「設定」ボタン(歯車のアイコン)をクリック。
- 表示されるダイアログの左側で「リモート」を選択。
- 削除したいリモート(リポジトリB)を選択し、「削除」ボタンをクリック→「OK」。
以上です。