【Git】で誤って違うブランチにcommitしてしまった時の話
こんばんは、ひろろです。
今回なんですけども、Gitでコミットする際に流れ作業のように、タンタンッ!と違うブランチでやっちゃう時ってありますよね。
本来ならブランチを切ってから、対象ブランチに切り替えて実装を始めると思いますが、作ったつもりになってやっちゃうやつ。
私自身も月に1回くらいやらかしたりするんで、そんな時の対処法を、今後の自分への注意喚起と備忘録とします。
概要
- ブランチを作成
- コミットログを確認
- ブランチの切り替え
- コミットを
chery-pick
でをコピー - 間違えてコミットしたブランチのコミットを削除
流れとしては下記ブランチがあり、
- develop(間違えたブランチ)
- branch1(本来コミットしたかったブランチ)
develop
のコミット分をbranch1
にコピーして、間違えをごまかしちゃおう!という感じです。
ブランチを作成
本来コミットする予定だったブランチを作成します。
$ git branch branch1 origin/develop
コミットログの確認
コミット番号が必要になるのでログの確認をします。
$ git log // 直前のコミット commit abcd1234 (HEAD -> develop) Author: hiroro <hiroro@hateblo.co.jp> Date: Fri Sep 6 11:50:49 2019 +0900 ...コミットメッセージ
abcd1234
が間違えてコミットした番号です。
ブランチの切り替え
本来コミットしたかったブランチに切り替えます。
$ git checkout branch1
コミットをchery-pick
でをコピー
chery-pick
とは
ざっくり言うと、過去のコミットから、そのコミットが持つ変更分を含んで新しいコミットを作成するためのコマンドです。
chery-pick
でコミットをコピー
先ほど確認したコミット番号を使用して対象のコミットをコピーします。
$ git chery-pick abcd1234 $ git log // コピーされてる(コミット番号は新たに生成されるので注意) commit efgh5678 (HEAD -> develop) Author: hiroro <hiroro@hateblo.co.jp> Date: Fri Sep 6 11:50:49 2019 +0900 ...コミットメッセージ
間違えてコミットしたブランチのコミットを削除
develop
からコミットを削除します。
$ git checkout develop $ git reset --hard HEAD^
HEAD^
は直前のコミットを指します。
ここの指定によって削除するコミット数を変更できます。
※ 削除する場合は、十分に確認を行なってから実行してください。
一応確認します。
$ git log // 間違ったコミットが出てこなければOK
まとめ
作業としては1分くらいで終わるものですが、「あ、やらかした?」と一瞬焦りはするので注意していこうと思います。
なんのためにbash
でブランチ名出るようにしてるんだか。