2019年1月26日土曜日

Git コミットの内容を分割して、コピー&ペーストする

作業をしていて、他のブランチでコミットした内容を使いたいという状況に陥った。
masterにあればいいのだがないので、なんとかして取り出したい。

さらに取り出したい内容は一つのコミットに色々な作業内容を含めたままプッシュしてしまっているときた。

 今までだと、諦めて作業を進めていたが、Gitは便利なもので他のコミットの内容をコピーできたり、コミット内容を後から分割できることを知ったので、そのやり方をメモしていく。

 参考サイト
gitで他ブランチの特定のコミットを取り込む方法
gitで1つのコミットを複数のコミットに分割する

コミットから取り出したい内容を分離


まず、取り出したい作業内容をコミットから分離する。

取り出したいコミットをする前の状態に戻る。
git reset <分離した作業内容があるコミットの一つ前>
あとは適時作業内容を分割してコミットしていき、取り出したい作業分をまとめたコミットを作成する。

git rebaseを使った方法もある。上のやり方は直前のコミット内容を分離したい時には便利だが、もっと昔のものとなると大変なので、そのときはgit rebaseを使用する。


Gitで数個前のcommitを遡って分割する


 git cherry-pick

次にgit logを使って取り出したいコミットのIDをメモしておく。

ここまで来たら、コミットのコピーを使いたいブランチに戻り、git cherry-pickを使う。

git cherry-pick <commit-id>

これで目的は達成できた。

0 件のコメント:

コメントを投稿