この記事では、ブランチを切る前に編集した内容を別のブランチに反映させる方法を紹介します。
自分自身度々ブランチを切る前に編集してしまうため、備忘録として残します。
gitでブランチを作成する前に編集をしてしまった場合、その編集内容を別のブランチに反映させる手順は以下になります。
1. 現在の変更を一時的に保存する
現在の変更(まだコミットしていない変更)を一時的に保存するためにgit stash
コマンドを編集してしまったブランチで叩きます。
git stash
一時的に保存したい内容はgit stash list
を叩くことで確認できます。
git stash list
2. 新しいブランチを作成する
任意のブランチから新しいブランチを作成します。例えば、masterブランチから新しいブランチnew-branchを作成する場合、次のようにします。
git checkout master
git checkout -b new-branch
3. 保存した変更を新しいブランチに適用する
先に保存した変更(stash)を新しいブランチに適用します。
git stash pop
git stash pop
コマンドを使用する際、複数のスタッシュが存在する場合の挙動は以下の通りです。
-
デフォルトの挙動:
git stash pop を引数なしで実行すると、スタッシュのリストの最上位(最も最近作成されたスタッシュ、stash@{0})の変更が現在のワーキングディレクトリに適用されます。 -
スタッシュの削除:
pop コマンドはスタッシュを適用した後、そのスタッシュをスタッシュリストから削除します。 -
特定のスタッシュを指定:
特定のスタッシュを適用したい場合、git stash pop stash@{n}
のようにして指定のスタッシュを指定できます。ここで n はスタッシュリスト内のインデックスです。 -
コンフリクトが発生した場合:
pop 操作中にコンフリクトが発生すると、Gitはそのスタッシュをリストから削除しません。コンフリクトを解決し、git stash drop
コマンドを使用して手動でスタッシュを削除する必要があります。
まとめ
度々やらかしますが、上記のコマンドを叩くことで元のブランチに加えた編集内容を新しいブランチに移行させることができます。