git rebase 中のコンフリクト対応と中断方法を確認する
git rebase 中にコンフリクトが起きた場合の解決方法や、rebase を中断する git rebase --abort の使い方を確認する
今日やったこと
git rebase中にコンフリクトが起きた場合の流れを確認した- rebase 中にコンフリクトが起きると、Git の処理が途中で止まることを確認した
- まずは
git statusを実行して、どのファイルでコンフリクトが起きているかを確認した
git status
- コンフリクトしたファイルを開き、競合している内容を確認した
- ファイル内の競合箇所を修正し、最終的に残したい内容に整理した
- コンフリクトを解消した後、修正したファイルを
git addでステージングした
git add .
- ステージング後、
git rebase --continueを実行して rebase を再開した
git rebase --continue
- rebase の途中で作業をやめたい場合は、
git rebase --abortを使うことを確認した
git rebase --abort
git rebase --abortを実行すると、rebase を開始する前の状態に戻せることを確認した
学んだこと
git rebase中にコンフリクトが起きると、Git は自動で処理を進めず、一時停止する- rebase が止まった場合は、まず
git statusを確認すると、次に何をすればよいか分かりやすい git statusでは、コンフリクトしているファイルや、rebase 中であることを確認できる- コンフリクトしたファイルには、どちらの変更を残すか判断が必要な箇所が表示される
- コンフリクトを解消しただけでは rebase は再開されない
- コンフリクトを解消した後は、修正したファイルを
git addする必要がある git addは、コンフリクトを解消済みとして Git に伝える意味もあるgit rebase --continueは、コンフリクト解消後に rebase を再開するためのコマンド- rebase 対象のコミットが複数ある場合、
git rebase --continue後に別のコミットで再びコンフリクトが起きる場合もある - コンフリクトが何度も起きた場合も、基本的には「修正する」「
git addする」「git rebase --continueする」という流れを繰り返す git rebase --abortは、rebase を中断して開始前の状態に戻すためのコマンド- rebase の途中で状況が分からなくなった場合は、無理に進めず
git rebase --abortで戻す選択肢もある - rebase はコミット履歴を書き換える操作なので、共有済みのブランチで実行する場合は注意が必要
あいまいなこと
- rebase 後に push するときの
--force-with-leaseの使い方 git push --forceとgit push --force-with-leaseの違いgit rebase --skipを使ってよい場面- rebase 中に複数回コンフリクトが起きた場合の考え方
- 共有ブランチで rebase してよいケースと避けた方がよいケース
次にやること
- rebase 後にリモートへ push する場合の注意点を確認する
git push --force-with-leaseの意味を整理するgit push --forceではなく--force-with-leaseが推奨される理由を確認する