gitコマンド 作業ブランチの最新化・コンフリクトについて

git関連

どうも、こんにちは!

今日は、特定の場面でのgitコマンドについて、記録しようかと思います。

その場面は

ある作業ブランチでの作業が長引いた時の、作業ブランチへのmasterブランチのマージ

となります。

では、早速見ていきましょう!

場面について

ある作業ブランチでの作業が長引いた時の、作業ブランチへのmasterブランチのマージ

再 掲

このgit操作を行う必要がある場面に、業務でいつ遭遇してもおかしくないと思います。
実際に僕も何回か遭遇しました。

詳しくどのような場面であるかを見ていきましょう!

Aというブランチで作業をしていたところ、コードレビューでの指摘修正等も重なり、Aブランチでの作業が2週間ほど経ったころ、上司から次のようなことを指示されました。

上司
上司

最新のmasterブランチをAブランチにマージしといてくれる?

この指示について補足すると、

masterブランチが2週間の間に結構更新されているから、事前にコンフリクトに対応するためにも最新のmasterブランチをAブランチにマージしといてくれる?

という意味でした。

なぜ、masterブランチをマージする必要があるのかというと、

例えば、Aブランチでの作業が全て完了し、いざmasterブランチへAブランチをマージ!となった際に、コンフリクトが発生・・・

Aブランチの作業担当者にコンフリクトが発生したことを連絡し、対応を依頼して・・・
(ブランチの作業者とmasterブランチへのマージを行う担当者は通常異なることが多いと思います。)

というようにマージのタイミングでのコンフリクト発生は、少々手戻りのような形になり、面倒です。

そのため、Aブランチで作業中の間に、作業担当者がmasterブランチの最新の状況をAブランチに反映させて、コンフリクトが発生するかどうか事前に確認しておこうという内容の指示でした。

コマンド操作

以降では、gitのコマンド操作を順にご紹介します。

masterブランチへ切り替える

まずは、作業中のブランチからmasterブランチへ切り替えます。

git checkout 切り替え先のmasterブランチ名

masterブランチを最新化する

切り替えたローカルのmasterブランチを最新化するため、リモートリポジトリの対応するmasterブランチを取り込みます。

git pull リモートリポジトリ名 masterブランチ名

※ 通常ローカルのmasterブランチ名は、リモートのmasterブランチ名と同じであることが多いです。

これでローカルのmasterブランチは、リモートと同じ(最新)状態になりました。

再び作業ブランチに戻る

作業をしていたブランチに戻ります。

git checkout 作業ブランチ名

マージする

作業をしていたブランチに戻ってきました。

作業ブランチにいる状態で、最新化したmasterブランチをマージさせます。
マージにより、masterブランチの内容が作業ブランチに取り込まれます。

git merge masterブランチ名

これで完了です!
作業ブランチが最新化されました。
引き続き作業ブランチでの作業に戻りましょう!

コンフリクトが発生したら・・・

マージした際に、コンフリクトが発生する可能性があります。

自分が、作業ブランチで修正している箇所について、別の作業者…①が別のブランチでコード修正し、その修正内容をmasterブランチに反映させていた場合は、コンフリクトが発生します。

初めてのコンフリクトの場合は少し焦ってしまいますが、そもそも作業ブランチの最新化は、コンフリクトを事前に対応するという点が大きな意味でしたので、何も問題ありません。
どこの修正がぶつかっているか確認し、落ち着いて対応しましょう!

お互いの修正内容に矛盾が生じ、共存することができない場合は、作業者①に直接確認あるいは、先輩や上司等の近くの周りの人に確認してみましょう。

ここで間違ってもやってはいけないことは、

自己判断で、作業者①の修正を上書いてしまったり、消してしまったりすることです。

上記で「共存することができない場合」はとしましたが、コンフリクトが発生した場合は、まずは、周りに確認することがベストです!

特に、規模の大きなプロジェクトになると作業者①がどこの誰かもわからない別の会社の人ということは、多々ありますので、周りの近くの人に確認しましょう。
(もちろん、git管理をしていますので、作業者①の名前は記録されていますが、その人と対面したことがないということはたくさんあると思います。)

とにかく一人で抱え込むことはやめましょう!

まとめ

場 面

ある作業ブランチでの作業が長引いた時の、作業ブランチへのmasterブランチのマージ

No コマンド 内容
1 git checkout 切り替え先のmasterブランチ名 masterブランチへの切り替え
2 git pull リモートリポジトリ名 masterブランチ名 masterブランチを最新化する
3 git checkout 作業ブランチ名 作業ブランチに戻る
4 git merge masterブランチ名 最新化したmasterブランチを
作業ブランチに反映させる
git関連プログラミング
ダイジュをフォローする
効率的にプログラミングスキルを身につけて、ITエンジニアになろう!

どの企業も中途採用では、入社後に新人研修のような手厚いプログラミング研修を用意していることはなく、すぐに現場配属となることがほとんどです。
そのため、転職前にしっかりと学習しておくことが必要となります。
僕は、企業の新人研修とプログラミングスクール受講のどちらも経験したことがありますが、スクールの受講内容は、企業の研修にも引けを取らないと感じます!
エンジニアへの転職を本気で考えている方は、効率的に差を埋めるためにもぜひプログラミングスクールの受講をおすすめします!

ITエンジニア ダイジュBlog
タイトルとURLをコピーしました