別ブランチでコミット †
簡単に †
別のブランチでコミットしたかったけど,既にコミットしたくないブランチで変更してしまっているとき.
masterブランチにいるけど,まだmasterには入れずにdevブランチで今の内容をコミットしたいとき…などは下記の操作をする.
- stashで現在の内容を保存
git stash # -u (--include-untracked) をつけるとバージョン管理適用外ファイルも含める
- checkoutでブランチの移動
git checkout dev # 新規作成する場合は -b をつける
- stashしたものを移動したブランチで適用
git stash pop # stash は適用後に削除
または
git stash drop # stash が適用後も残る
- addしてcommit
git add .
git commit
ブランチごとにそれぞれ別ファイルの変更をコミット †
【変更内容が未コミット】で
変更済みファイルが【複数】あり
それぞれ【別のブランチで】コミットしたい時の話.
- masterブランチでコミットしたいファイル→A
- anotherブランチでコミットしたいファイル→B
という前提で,masterブランチにいるとする.
- Aをmasterブランチでコミット.(push)
git add A
git commit
git push origin
- stashでファイルBの状態を保存しておく
git stash -u
- checkoutでanotherブランチに切り替え
git checkout another
- logを見てstash状態のコミットのハッシュを確認する (git stash applyを使いたいので)
git log -n 5 --all --decorate --oneline
- ハッシュ値を入力して前の状態のファイルBを取り戻す
上記のpopやdropの代わりにapplyでも良い.
git stash apply --index 64359e3
- Bをanotherブランチとしてコミット.Aの変更をanotherブランチでも反映させるときはmerge
# git merge origin/master # 必要であれば
git add B
git commit