土. 10月 8th, 2022

 

gitで間違えたブランチに書き込んだ

一度退避させた後、ブランチを切り替えて、退避した変更を引き継ぐというやり方。しょっちゅう使っているコマンドの一つ

今回はmasterブランチに書き込んだとする

変更点を退避する

git stashコマンドを使うと、変更点のみ退避することが可能

$ git stash
Saved working directory and index state WIP on master: 1169a810 Merge branch 'route53_20180724_120035' into 'master'
$ 

 

この時点でgit statusを実行すると変更点がなくなる。
書き込んだmasterブランチはクリアーになる

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

nothing to commit, working tree clean
$

新ブランチを作成

本来作業したかったブランチを作成する
今回はCloudWatchAlarmというブランチとする
ここではcheckout -bオプションで作成と同時にgit branchを行う

$ git checkout -b CloudWatchAlarm
Switched to a new branch 'CloudWatchAlarm'
$ 

当然この時点ではgit statusを実施しても変更はない

$ git status
On branch CloudWatchAlarm
nothing to commit, working tree clean
$

ブランチは存在している

$ git branch
* CloudWatchAlarm
  master
$ 

新ブランチに変更点を取り入れる

git stash popコマンドで新ブランチに変更点を取り入れる

$ git stash pop
On branch CloudWatchAlarm
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   CloudWatchAlarm.sh

no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (d081148067aad39eb60500c5fbb2a32a4c6c2566)
$ 

まとめ

# 一時退避
git stash

# チェックアウト 
git checkout xxx

# 直前のgit stashを取り出す
git stash pop