別ブランチでコミット †
簡単に †
別のブランチでコミットしたかったけど,既にコミットしたくないブランチで変更してしまっているとき.
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ブランチでコミットしたいファイル→ fileA
- anotherブランチでコミットしたいファイル→ fileB
という前提で,masterブランチにいるとする.
- fileA を master ブランチでコミット.(push)
git add fileA
git commit
git push origin
- stash で fileB の状態を保存しておく
git stash -u
- checkout で another ブランチに切り替え
git checkout another
- log を見て stash 状態のコミットのハッシュを確認する (git stash applyを使いたいので)
git log -n 5 --all --decorate --oneline
- ハッシュ値を入力して前の状態の fileB を取り戻す
上記の pop や drop の代わりに apply でも良い.
git stash apply --index 64359e3
- fileB を another ブランチとしてコミット.fileA の変更を another ブランチでも反映させるときは merge
# git merge origin/master # 必要であれば
git add fileB
git commit