コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

間違ってmasterにコミットを付け足してしまったときのcherrypickチートシート

毎度手順を調べる手間を省略するためのメモ

環境

$ git --version
git version 2.21.1 (Apple Git-122.3)

状況

  • 作業をしてコミットしていざPushしようとしたらmasterにやっていた
  • 思い切りresetするには変更量が多い

やり方

  1. まずはorigin/masterからブランチを切る.他にふさわしいbranchがあればそれを指定する。
  2. remoteの向け先がコピー元と同じになっているので一旦リセットする
  3. コミットの差分数を調べる
  4. 差分数だけcherry-pickする
  5. 元のブランチをリモートの状態と同等にする

feature/new_filesに6個のコミットを移す場合のやり方

$ git checkout -b feature/new_files origin/master
$ git branch --unset-upstream
$ git log --oneline ..master
$ git cherry-pick master~6..master
# masterをもとに戻す
$ git checkout master
$ git fetch
$ git reset --hard origin/master

参考