概要
Git
の操作でcherry-pick
を使ってPR
(Pull Request)を作成した為、その手順を備忘録としてまとめました。
cherry-pickの概要
機能
- 主(軸)となるブランチに対して、特定のコミットのみを適用する際に使用するコマンド
- 複数のブランチで同じ内容が含まれる場合、コンフリクトの可能性がある為、注意が必要
cherry-pickの視覚的な例
1.初期状態
-
main
ブランチとdevelop
ブランチがそれぞれ異なるコミット履歴を持っている
2.cherry-pickのプロセス
-
develop
ブランチにあるコミットC
とD
をcherry-pick
し、main
ブランチに反映させる - これにより、
main
ブランチが最新の状態となる
事前準備
-
git log
を実行し、cherry-pickを行いたいコミットのハッシュ(コミットID)を確認・リストアップしておく
git log
# 出力結果
commit 2acd***************************3871 # ← この部分がコミットハッシュ
Author: test 1234 <62537601+test-1234@users.noreply.github.com>
Date: Wed Jan 〇〇 **:**:** 20** +0900
feat: 〇〇を修正 (#1)
手順
注意
※ 作業は、ローカル環境のターミナル(CLI)で行う
ブランチ切り替えと最新情報の取得
- mainブランチに切り替える
git checkout main
- リモートリポジトリから最新の情報を取得する
git pull origin main
-
main
ブランチからcherry-pick
用のブランチを作成する
git checkout -b BranchName # ブランチ名は任意
# 入力例
git checkout -b main_merge_年月日 #(年月日に、20510101を記載する)
cherry-pick作業
- 事前に控えておいたコミットのハッシュ(コミット Id)を使用して、mainブランチに取り込む
git cherry-pick [コミットハッシュ]
# 入力例
git cherry-pick 2acd***************************3871
-
git log
を使って、適用したいコミットのみが含まれているかを確認する
git log
-
cherry-pick
で取り込んだブランチをリモートリポジトリにpush
する
git push origin BRAHCHNAME # ブランチ名は任意
# 入力例
git push origin main_merge_年月日 #(年月日に、20510101を記載する)
注意
リモートリポジトリにpush
する際、BranchName
に本番環境のブランチ名(例: main
)を記載しない
PR(Pull Request)作成
GitHub
にて、master <- BranchName
の構造でPR
を作成する
参考資料
まとめ
チーム開発の際、必ず必要なGit
操作だと考えています。今回の改修で経験出来て良かったと感じております。Git
操作に関しては、今後もより精進したいと思います