commitを別の作業branchへ移動する方法
Nov 28, 2018 22:27 · 645 words · 2 minute read
これは一体
Gitで何度も陥ってしまう過ちにまたハマってしまう日が来ても、乗り越えられる自分でありたい。 そのための備忘録です。
状況
新しい作業の開始時に、branchの切り替えを忘れてしまう。 前回まで作業してたbranchやmasterで作業を開始してしまった時に、正しいbranchに作業したcommitを移動する。
……これ、自分的にはあるあるすぎる。何回やってんだ。
やること
[start地点] 正しくないbranch Aで作業を開始してしまった。移したいcommitは3つ。
1. 移動先branchがない場合は作成 (branch B)
2. branch Aで下記コマンドを叩いて、移動するcommitのIDを確認
- 末尾に
-10
などいれると最新のcommitを上から10個表示するなど指定できる
$ git log --oneline
3. branch Bに移動して移したいcommitをcherry pick する
- コマンドの後にcommit IDを入力
- 古い順に入力すること
$ git cherry-pick xxxxxxx yyyyyyy zzzzzzz
4. commitがbranch Bに移動できているかlogで確認
$ git log --oneline
5. 必要があればbranchAのcommitを消去
- 下記のコマンドでできるらしい
- HEAD~xは任意の数値に変更
$ git reset --hard HEAD~3
他のやりかた
branch Bがまっさら状態だった場合、
1. branch Aで作業をstashにしまう
git stash
2. branch Bでstashを開ける
git stash pop
というやり方もあるらしい。 この場合、branch AとBの作業箇所が被らないことが前提となる。(コンフリクトするため)
備忘のために書いたとはいえ、同じことを繰り返さない自分であってほしい。