実務で、ある作業をしている際に、同一のプロジェクトで他の作業を急遽行って欲しいと依頼があった。
その際に、作業中のものを一時退避して、新たにチェックアウトする方法を学んだため、備忘録として残すもの。
Gitを使用して、「developブランチ」から「Aブランチ」を切って作業を行っていたとする。
突然、別の修正が必要になり、「developブランチ」から「Bブランチ」を作成して作業を行う必要が生じたとする。
「Aブランチの作業」を「Bブランチ」には反映せずに、Bブランチで作業を進めたい場合、以下の手順で実行できる。
なお、Aブランチの変更は まだコミットされていない という前提とします。
操作手順
1. 現在の変更を一時的に退避させるために、以下のコマンドを使用する。
git stash
これにより、Aブランチの変更が一時的に保存され、作業ディレクトリがクリーンな状態になる。
2. 新しいBブランチを作成するために、以下のコマンドを使用する
git checkout -b B-branch
これにより、新しいBブランチが作成され、Bブランチに切り替わる。
これで、Bブランチでの作業を開始することができる。
3. Bブランチで必要な変更をコミットするために、以下のコマンドを使用する。
git commit -m "Bブランチでの作業をコミット"
Bブランチでの変更をコミットする。
4. Bブランチでの作業が完了したら、Aブランチに戻るために、以下のコマンドを使用する。
git checkout A-branch
これで、Aブランチに切り替わる。
5. Aブランチでの作業を再開するために、以下のコマンドを使用する。
git stach pop
一時的に退避させた変更を復元する。
この際に、Aブランチでの変更とBブランチでの変更が干渉しないように注意が必要。
補足(stashしている履歴を確認するコマンド)
git stash list
上記のコマンドでstashされている一覧を確認することができる。
まとめ
これらの手順によって、AブランチとBブランチでの作業を独立して行うことができる。
一時的な変更の保存に「git stash」を使用することで、異なるブランチでの作業を切り替えることができる。
そして、「git stash pop」を使用して変更を取り出し、必要な場合に復元できる。