【Git】git stashでコンフリクトが起きたときの対処
git stash
は現在のブランチで変更をコミットせずに退避・一時保存できるコマンド
たまに遭遇するケース
結構前に退避したものをgit stash pop
やgit stash apply
で元に戻そうとした時、色々なコミットを取り込んでしまっていると、場合によっては以下のような感じでコンフリクトが起きることがある
# 1 退避
git stash
# 2 別の人のコミットなどを取り込んだ後に元に戻そうとする
git stash apply stash@{0}
# 3 コンフリクトが起きる
error: Your local changes to the following files would be overwritten by merge:
~/ファイル名
Please commit your changes or stash them before you merge.
Aborting
そんな時に使うコマンドがgit stash branch <newbranch>
コマンド
git stash branch <newbranch>
の使い方
これは新しいブランチを作成し、作業スタックに退避した時点のコミットを再現して、スタックにある作業を再適用してくれる
つまりstashコマンドを実行した時点のブランチの状態に戻せるようなイメージ
# new-branchブランチを作成し、そっちのブランチに適用
git stash branch new_branch stash@{0}