🤸‍♂️

【GitHub】作業途中に別のブランチを切りたい

に公開

ひさしぶりにZennを書いています!
最近Githubを使うことが多いので、忘れないようにメモしておきます。

作業途中に他の優先する作業が入ってきた!

コードの編集中に、別の実装を頼まれました。
まだpushしたくないし、どうしよう!作業中の変更(modified)が残っていると、ブランチを移動できません!
そんなときに一時保存して、あとから取り出せる便利なコマンドがgit stashです。

一時保存コマンド

作業を一時的にgit stashで他の場所に退避させておきます。

git stash

これで作業中の変更は一時保存され、ブランチ移動ができるようになります。

【新しいブランチを作る手順】

  1. master ブランチに移動
  2. 最新の状態を取得(pull)
  3. 新しいブランチを作成
git checkout master
git pull origin master
git checkout -b new/Sagyou

これでnew/Sagyouブランチで新しい作業を開始できます。

一時保存しておいた内容を戻したいとき

作業途中の変更をgit stashで退避したあと、元の作業に戻りたい場合は以下のように進めます。

【ケース①】new/Sagyouブランチの作業が完了した(push済み)

  1. 元のブランチに移動(作業中の変更がなければ移動OK)
  2. スタッシュの一覧を確認
  3. 必要なスタッシュを適用して作業を再開
git switch 元のブランチ名
git stash list
git stash apply stash@{番号}

【ケース②】new/Sagyouブランチの作業も途中で、元の作業を再開したい

まだnew/Sagyouブランチをpushしていない=modifiedファイルがいるので、ブランチ移動はできません。
1.new/Sagyouブランチの作業もスタッシュして一時保存
1.元のブランチに戻る
1.スタッシュを適用して作業再開

git stash         # 今の作業を一時保存
git switch 元のブランチ名
git stash list
git stash apply stash@{番号}

まとめ

ブランチの移動は、modifiedファイル(編集済みファイル)があるとできません!
私も最初はうまく切り替えられず困っていましたが、git stash を覚えたことでスムーズに作業を切り替えられるようになりました。
stashを使いこなして、どんどんブランチを切って作業を進めます!!

Discussion