目的:ブランチのマージおよびタグを理解する

  • 前提
    • develop の変更を main(本番用)にマージしたいが main でコンフリクトが起きることは避けたい(機能停止となるため)
  • 戦略
    • develop に main の変更を取り込む
    • develop 上でコンフリクトを解消した後で main に合流

Step 1: develop ブランチでの処理

  • 以下のコマンドで現在のブランチを確認する
      git checkout develop
      git branch
      git rebase main
    
    • rebase は分岐の起点を変える.
    • develop はもともと main の最後の変更が行われる前に分岐したが,現在の main から分岐したように変更する.
    • これにより develop ブランチでコンフリクトが起きる(かもしれない)
  • コンフリクトの修正

  • 以下のコマンドを実行
      git add [ファイル名] # 修正したファイルをステージに追加
      git rebase --continue # rebase を継続
    
    • rebase は分岐後の develop コミットを現在の main に適用していくので何回も conflict が出る可能性があります(develop のコミットを rebase -i を使って整理しておくと良い)

Step 2: Develop の修正を main ブランチに合流(マージ)

  • Step 1 の rebase を行うことで,merge によるコンフリクトは起こらなくなります(起こらなくなるはず)
      git checkout main # main ブランチに切り替え
      git branch
      git merge develop # develop の変更をマージ
    
    • merge の後はコミットが要求されるが,fast forward (早送り) マージとなるため,main 上には develop のコミットが単純に付け加えられる.
    • fast forward を避けて,独立したコミットをしたい場合は merge --no-ff が必要となる.
  • develop ブランチの削除
      git branch -d develop # orign にマージされてないと怒られる
      git branch -D develop
    

Step 3: Push

  • main ブランチの変更を Push(コミットはもうしてあるので)
      git push # その他の指定はしなくてよい
    

Step 4: タグの利用

  • 特定のコミットにタグをつけて管理する
  • とりあえずの完成としてバージョン 1.0.0 をつける
      git tag v1.0.0
      git push origin v1.0.0 # タグをGitHubにPush