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.

【Git】誤って違うブランチに複数Pushしたコミットを正しいブランチ先に移動する。【cherry-pick】

Last updated at Posted at 2020-08-07

自分用のメモとして残します。

■やり方

前提として、cherry-pickを用いて連続したコミットをFromTo形式で移動させるのため、途中移動させたくないコミットがある場合は、この方法はできません。
また、移動先ファイルでも同じような修正が場合はコンフリクトがあるため、基本できません。

コミットの移動(コピー)

1.移動したいコミットRevを確認する。

移動したいコミットがあるブランチ(=誤ってコミット&プッシュしたブランチ)をチェックアウトする。
続いて、git fetch でリモートのコミット情報を取得してから
git log --oneline コマンドで コミットRevを確認してFrom~Toの2件分控える。

git checkout 移動したいコミットRev群があるブランチ名
git fetch
git log --oneline

2.コミットの移動先ブランチをチェックアウト

git checkout 移動先ブランチ名

3.コミットをコピー

1で確認したFromToのコミットRevを指定

git cherry-pick FromRev^..ToRev

FromRev^の ^FromRevを含むという意味です。

4.コミットのコピーまでの情報をリモートに反映する。

git push

移動して不要になったコピー元コミットを削除する

5.コピー元コミットがあるブランチをチェックアウト

git checkout コピー元コミットがあるブランチ名

6.コミット削除

注意)下記の例はブランチのHeadから3つ前まで履歴を削除するという例です。

git reset --hard HEAD~3

例えばHEADを含む2つのコミットをコピーした場合は
上記のようにHEADから数えて3つ前のコミットがHEADになるようにHEAD,HEADの直前コミットの2件をリセットするという意味なる。

7.コミット削除をリモートに反映する。

 git push -f origin ブランチ名

以上。

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?