SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

さらに使いやすく便利になった「Visual Studio」を始めよう!(AD)

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

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

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

 これまで見てきたように、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の差分比較機能を利用できるので、とても簡単にマージできることが理解できたと思います。

次のページ
ブランチ(分岐)の活用

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
さらに使いやすく便利になった「Visual Studio」を始めよう!連載記事一覧

もっと読む

この記事の著者

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

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8436 2015/03/10 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング