試練の軌跡

プログラミングで出くわした知識やツール、日常生活、働き方その他色々なことをメモしていくブログ

開発用ブランチにMasterブランチの最新コードを取り込む

開発用(作業用)のブランチを切って開発している時に、最新のmaterの更新内容を開発用ブランチに反映したい時がある。 Tortoise-SVNとかだと、確か右クリック→更新みたいなことをすれば、すぐに反映できた気がするが、gitでのやり方をメモしておく。色々調べて実践してみたが、どうやらgit rebase masterをして、git push origin 開発ブランチ名などをすると自分のプルリクエストのcommitの画面に他人のcommitが混ざるみたいだ(3回くらいそういうことをやっちまったので良い加減メモに残す) そのため、GtiHubで自分のプルリクエストのcommitの画面に他人のcommitを混ざらないようにして開発用ブランチにMasterブランチの最新コードを取り込むには以下のようにやれば良さそうだ。

※ もし、作業途中のものでcommit出来るものがあればcommitしておく
# masterブランチへ移動
git checkout master
# git pullでmasterを最新に
git pull origin master
# 開発用ブランチへ移動
git checkout 開発用ブランチ
# mergeコマンドでmaserの内容を取り込む
git merge origin master

これでもし、コンフリクト(競合)が発生した場合は個人的には、

  1. コンフリクトしたファイルはmaster側の更新内容を反映させる(自分の更新内容は消える)
  2. git commit でコンフリクトを解消する
  3. コンフリクトしたファイルに自分の更新内容を反映させる(git diffなどで差分を見ながら行う)
  4. 自分の更新内容をcommitする
  5. git push origin 開発用ブランチ

とやれば、競合は解決、自分の更新内容が反映される GitHub上のプルリクエストでも競合した時に、resolve conflictsボタンで競合を解決できるみたいだが、 個人的にはこっちのやり方がやりやすいなと思った。