とある機能の開発中のこと…
うぉ〜めっちゃうまくできた!
素敵なコードも書けたし、動きも問題なし!
テストも通る!!
ワイは天才か!!
よーーし!!
あとはコードチェックして
add commit
リモートにpushだ!!
そういえば今どこのブランチいるっけ?
git branch (パーン!!(Enter))
main
やで!!
m,m,m,main
だと!?
やってしまった( ; ; )
どのくらい変更したっけ?
git status(パーン!!(Enter))
変更ファイルが5つ
追加したファイルが4つ
やで!!
全部のファイルのコードを一旦適当なエディタにコピペして、git checkout .して、ブランチ切って…
くっそめんどいじゃん!!(# ゚Д゚)
※1人で開発しているといつもこんな感じです…
そんな直し方したら事故る可能性高いし、git使っているんだからもっとスマートに解決したいですよね?
素晴らしい方法!
ありました!!
前提
- mainブランチで開発をしてしまったことに気づき、現状の修正や追加をそのまま別のブランチに移動させたい
- コミットしていない状態である
- 本来作業したいブランチは未作成
まずは、git statusをして現状のファイルの状態を確認しましょう。
$git status
On branch main
Your branch is up to date with 'origin/main'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: index.html
上記のように、既にステージングにある(git addした)場合は、git reset HEADでステージから取り消しておきましょう。
$git reset HEAD
Unstaged changes after reset:
M index.html
$git status
On branch main
Your branch is up to date with 'origin/main'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: index.html
no changes added to commit (use "git add" and/or "git commit -a")
手順
1. git stash
$git stash
Saved working directory and index state WIP on main: 6786e9f first commit
$git status
On branch main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean
これで変更した
内容を一時的に退避できます。
git stashをした後、git statusを実行してみると変更がない状態になっています!
2. git checkout -b 新しいブランチ名
$git checkout -b develop1
$git branch
* develop
main
git checkout -b ブランチ名で新しいブランチを作成して移動することができます。
その後git branchを実行して、現在いるブランチを確認しましょう。
3. git stash apply
$git stash apply
On branch develop
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: index.html
git stash applyで先ほど一時退避した変更内容を反映できます。
これで解決です!d( ̄  ̄)
git stashは他にも便利な使い方があります!
ご自身でも調べてみてください!
終わりに
開発始める前にブランチやステータスの確認を忘れずにd( ̄  ̄)
なんなんだこの革新的な方法は!!
(大袈裟)
git stash
素晴らしい(゚∀゚ノノ”☆パチパチパチ
こうしてワイの心の平穏は保たれたのであった。
参考記事
[Git]誤ったブランチで実施した変更を正しいブランチに移動する
間違えて違うブランチで開発を始めてしまったときに、別のブランチに編集中のソースを移行する方法(git stash)