CodeZine(コードジン)

特集ページ一覧

Gitを用いてVisual Studio開発をしよう

さらに使いやすく便利になった「Visual Studio」を始めよう! 第6回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2015/03/10 14:00

目次

衝突(競合)を回避するマージ

 これまで見てきたように、Gitではプッシュとプルを用いて、ローカルとリモートで同期してきました。ただし、複数人で開発を行っていると同じファイルを同時に編集してしまう場合があります。この「衝突」の対処方法「マージ」について紹介します。

リモートリポジトリとローカルリポジトリで同じファイルを変更

 それでは、実際に衝突を起こしてみましょう。先ほどと同様にVS OnlineでIndex.cshtmlを編集します。

リモートリポジトリ側でIndex.cshtmlのタイトルを変更
リモートリポジトリ側でIndex.cshtmlのタイトルを変更

 今回は2行目のタイトルを「Home Page」から「ホームページ」に変更してコミットしています。

VS側でIndex.cshtmlのリード文を変更
VS側でIndex.cshtmlのリード文を変更

 次に、VSでもIndex.cshtmlを編集します。7行目のリード文を日本語に直し、コミットを行います。これで、同一ファイルに対してリモートとローカルの両方で変更がかかった状態となっています。

衝突の発生

 それでは、リモートの変更に気づかなかったというシナリオで、VSからプッシュを行ってみましょう。[出力方向のコミット]-[プッシュ]をクリックします。しかし、エラーでプッシュすることはできないメッセージが表示されます。

プッシュ時にエラーが発生。まずプルを行う指示が表示される
プッシュ時にエラー。最初にプルを行う指示が表示

 Gitでは、プッシュする前に他の人の変更をローカルリポジトリに取り込まなければいけません。そのため、まずフェッチボタンをクリックします。フェッチの時点で入力と出力それぞれにコミットが存在していることが分かります(まだ競合は発生していません)。

フェッチをクリックして、それぞれコミットが1件ずつあることが判明
フェッチをクリックして、それぞれコミットが1件ずつあることが判明

 次にプルをクリックします。

プルをクリックして、競合が判明
プルをクリックして、競合が判明

 プルが完了したことで、ローカルリポジトリとリモートリポジトリ間で競合が発生したことが通知されました。

競合の解決

 それでは、競合を解決していきましょう。まず、通知領域の[競合を解決]リンクをクリックして[競合の解決]メニューに移動します。次に競合を解決するファイル「Index.cshtml」を選択して[マージ]ボタンをクリックします。

マージボタンを押して、コードの差分を表示
マージボタンを押して、コードの差分を表示

 マージボタンを押すと、コードウィンドウの左にリモートの変更点、右にローカルの変更点、下にマージ後のソースが表示されます。左右のエディタではチェックボックスのオンオフができるようになっているため、下のマージ後のソースを見ながら、競合を解決することができます。作業が完了したら、コードウィンドウの左上の[マージの許可]ボタンを押すと、その内容でローカルファイルが上書きされます。

[マージの許可]をクリックして競合を解決
[マージの許可]をクリックして競合を解決

 競合ファイル「Index.cshtml」が解決済みとして処理されたのでファイルを保存して[マージをコミット]をクリックします。あとは再び「Index.cshtml」をコミットしてプッシュします。

競合を解決したIndex.cshtmlをコミットしてプッシュ
競合を解決したIndex.cshtmlをコミットしてプッシュ

 これによって、リモートとローカル間の競合を解決することができました。VSの差分比較機能を利用できるので、とても簡単にマージできることが理解できたと思います。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

あなたにオススメ

著者プロフィール

  • WINGSプロジェクト 青木 淳夫(アオキ アツオ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きた...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

バックナンバー

連載:さらに使いやすく便利になった「Visual Studio」を始めよう!
All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5