0
0

More than 3 years have passed since last update.

cherry-pickコマンドでコミットを書き換えよう

Last updated at Posted at 2020-08-15

ソースコードをマージするために、方法が多いです。こちらは普通がmerge、rebaseで利用していますが、もう一つ方法を紹介したいと思います。

仮にmasterやdevはブランチがある。今回、devのコミットからmasterブランチにマージしていきます。

既にmasterブランチのコミット

devブランチを作成する前
commit●
devブランチを作成する後
commit❺

既にdevブランチのコミット

commit❶
commit❷
commit❸
commit❹

● 一つコミットをcherry-pickしたい

git cherry-pick {コミットID}

● 複数の連続したコミットをcherry-pickしたい

git cherry-pick {始点となるコミットの1つ前のコミットハッシュ}..{終点となるコミットハッシュ}

例1:
・masterブランチにcommit❶をcherry-pickしたい場合

・git cherry-pick commit❶
・コンフリクトが発生する場合
➀ コンフリクトを修正
➁ 修正したファイルはgit add <paths> または git rm <paths>
➂ git commit
・コンフリクトを対応した後、cherry-pickを終わりのコマンドを実行していきます
git cherry-pick --quit

結果、masterブランチのコミットは

commit●
commit❺
commit❶

です。

例2:
・masterブランチにcommit❶〜commit❹をcherry-pickしたい場合
commit❶もマージしたい場合は、commit❶の1つ前のコミットハッシュからcherry-pickする必要です。今回のコミットはcommit●です。そのため、下記のコマンドがある。

・git cherry-pick commit●..commit❹
コンフリクトが発生すると、例1と同じで対応します。
違い点のは複数コンフリクトがある場合は、次のコミットをcherry-pickするために、
下記ののコマンドを実行します
・git cherry-pick --continue

結果は

commit●
commit❺
commit❶
commit❷
commit❸
commit❹

です。
そして、途中でcherry-pickを辞めたいなら、下記のコマンドです。

git cherry-pick --abort

以上です。

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