0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PhpStormで別リポジトリのコミットを大量Cherry-Pickする

Posted at

前提条件

  • リポジトリが異なる
  • ファイル構成やソースがほぼ一緒
    • (例:別リポジトリでシステムの作り直しが進行している
  • ブランチは一致していない

状況

リポジトリBで開発が進んでいて、
リポジトリBのコミットのいくつかを、リポジトリAに取り込みたいと考えています

スクリーンショット 2023-01-30 7.03.36.png

スクリーンショット 2023-01-30 7.07.57.png

しかし、リポジトリが異なるため、rebaseやmergeという方法が取れません。

このような状況の時
PhpStormのGit機能を使ってコミットを取り込むという方法を書いていきます。

方法

(1)リモートリポジトリにリポジトリBを追加

[Git] > [リモートの管理]
スクリーンショット 2023-01-30 7.18.51.png
[+] からリモートリポジトリの追加をする
ここのURLはgit cloneするときのURLを入力
スクリーンショット 2023-01-30 7.19.53.png

(2) フェッチ

下部メニューの[Git] > [取り込みたいリモートリポジトリ] > [フェッチ]
スクリーンショット 2023-01-30 7.29.52.png

時間かかる...
ローカルにコミット空っぽのブランチを作って
ブランチ指定でpullしてもいいかも(未検証)

(3) cherry-pickする

  1. 取り込み先のブランチにチェックアウトする
  2. 取り込み元(ここではリポジトリBのリモートブランチ)の特定ブランチを選択
  3. 取り込みたいコミットを右クリック > 🍒Cherry-Pick
    cherry-pick.png

大量にやる場合は

  1. 取り込み先のブランチにチェックアウトする
  2. 取り込み元(ここではリポジトリBのリモートブランチ)の特定ブランチを選択
  3. 取り込みたいコミット選択(この時マージコミットを選択すると失敗するので選ばないこと)
  4. 選択上で右クリック > 🍒Cherry-Pick

(4) コンフリクトしたら解決する

慎重に確認しながらコンフリクトを解消してコミットを取り込んでいく

さいごに

当初は、git format-patch を使って、特定コミットを起点として、
パッチを作成して取り込み先に当てるという方法を考えていたんですが
あまりに慣れぬことで上手くいかず、
普段よく使うcherry-pickで対応という策に落ち着いたという背景があります。

やっていることの状況が、なかなかのレアケースなので
絶対忘れると思い備忘録として書き残します。


弊社では、一緒に働いてくれるエンジニアを募集しています。
個人的には、PhpStorm好きーな人が来てくれたら、IDE談義したいっす

↓そんな感じで興味のある方はこちらから↓
Wantedly - スタジオアンビルト株式会社

こんなWebサービスを作っています。
マドリー
Studio Unbuilt

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?