※自分用の備忘録です。
#作業時
mainブランチから作業ブランチを切る。
git checkout -b feature1
作業毎に
git add -A
git commit -m "○○追加"
git push origin feature1
#mainブランチへマージする。
Github上でプルリクエスト作成。
プルリクエストにOKが出たら、マージの前に作業コミットをまとめる。
まずコミットの内容を確認。
git log --oneline
git rebase -i <HEAD>
をして、pickをsに変更する。
Gitの複数コミットをrebaseとsquashでまとめる方法
リモートへpushする。
git push origin feature1 -f
Github上でマージボタンを押す。
mainブランチへのマージ完了🙆♀️
#次の作業に進む。
ローカルでfeature1ブランチにいるので、mainブランチに戻る。
mainブランチをリモートに合わせる。
git fetch origin
上記で、リモートの最新情報をローカルリポジトリに取得。(↑これだけではワークツリーには反映されない。)
git merge origin/main
上記で変更をワークツリーに反映。
#feature1にいる状態でfeature2ブランチを切って作業を進めてしまい、mainブランチからfeature2ブランチを切り直したい場合
(ちなみにfeature2でパッケージのインストールなどしてしまった...)
feature1ブランチに戻る。
git checkout feature1
mainブランチに戻る。
git checkout main
↑これでエラー出る。
error: Your local changes to the following files would be overwritten by checkout:
<ファイル名>
<ファイル名>
Please commit your changes or stash them before you switch branches.
Aborting
とりあえずfeature2ブランチを消してみた。(これやった後もエラー出るのでしない方がいいかも。)
git branch -D feature2
git checkout main
上記と同じエラーが出る。
そこで...
git stash
をしてみると
Saved working directory and index state WIP on feature1〜(省略)
と返ってきて、
git checkout main
ができた!
【Git】checkout時に、「error: Your local changes to the following files would be overwritten by checkout: 」と表示された時の対処方法
【git stash】コミットはせずに変更を退避したいとき