Gitを使ってみよう!【競合編】

Git

こんにちは ECF Tech
ブログ担当 Michiです。

Gitシリーズ第6回はコンフリクト編です。よろしくお願いします。

本記事は「Gitを使ってみよう!」というシリーズで作成している記事の1つになります。下記のリンクより、第1回からの記事を閲覧できます。ご活用ください。

Git
Gitの事を、学んで試せるページとなっています。初めてGitを利用される方に最適です。ぜひご活用ください。

対象読者

  • Gitを学んでみたい方
  • Gitのクローンやコミットをやったことがある方

今回から複数のプログラマーによる開発がスタートします。そんな中、Gitがどんな風に活躍するかを見ていきたいと思います。

まずは新規に、Cドライブ直下に work02というフォルダを作成し、クローンします。

コマンド

クローンできていることを確認します。

ここが新しいプログラマBさんの作業フォルダだとします。現在の状態を図にすると、次のようになります。

それではprogram02.txtを開いて作業を行ないます。次のようにします。

表示するための機能Bができましたので、コミットしましょう。 git addコマンド、 git commitコマンドの順で実行します。

コミットが完了しました。

表示するための機能Bを作成したBさんは、そのままリモートリポジトリにPushすることにしました。

一方でAさんが同じprogram02.txtに対し、別の機能を追加していたとしましょう。

次のコマンドで C:\work01\hello_repoに移動します。

program02.txtを開き、次のようにします。

機能Cの追加が終わりましたので、コミットしましょう。

コミットが完了しました。

AさんもリモートリポジトリへPushすることにしました。 git pushコマンドを実行します。

実行結果

リモートリポジトリへのpushに失敗しました。理由はリモートリポジトリへ統合(マージ)する際に競合(Conflict)が発生してしまったためです。

競合とは、ファイルを編集した箇所が他の作業者と重複してしまい、うまくマージできない状態の事を言います。

今の状態を図に示すとこんな感じです。

Aさんが作成した機能もBさんが作成した機能も今回のプログラムには欠かせない機能なので、「表示するための機能B」と「表示するための機能C」の両方がprogram02.txtに入るように、ファイルを手直しする必要があります。この作業を競合の解決といいます。

手直しするためには、一旦リモートリポジトリの内容をローカルリポジトリに持ってくる必要があります。この操作をPullといいます。次のコマンドを実行しましょう。

実行結果

メッセージ下部に CONFLICTと表示されています。program02.txtを自動マージしようとして失敗したというメッセージが出ています。

ここでprogram02.txtを開いてみましょう。次のようになっています。

これはリモートリポジトリ側とローカルリポジトリ側でどのような違いが発生しているかを示しています。

は、どのコミットオブジェクトかを示すものです。

このファイルを見て修正を行なっていきます。ではそのまま、program02.txtを編集しましょう。次のようにします。

これで機能A~Cがすべて入りました。AさんBさん両者の作業が報われたことになります。これで競合は解決です。

では、新しくなったprogram02.txtをコミットし、リモートリポジトリへのPushまで一気に行きましょう。

今度は無事、リモートリポジトリへのPushが成功しました。

Pullについて

ちなみにPullは競合の解決時に使うものではありません。ローカルリポジトリの内容を、最新の状態(リモートリポジトリと同じ状態)にするために使うコマンドです。

大規模なシステム開発では、多くの人が絶えずリモートリポジトリを更新している可能性があります。そのため、定期的に自身のローカルリポジトリにもその変更を反映させてあげる必要があります。そのために用いられるのが git pullコマンドです。

おわりに

本日はここまでとさせていただきます。最後までご覧くださり、ありがとうございました。競合の解決は実際のシステム開発ではかなり大変な作業です。簡単な例で練習してその感覚をつかんでおくといいと思います。また次回もよろしくお願いします。


合同会社イー・シー・エフでは、子ども向けプログラミングなどの教育講座を実施しています。プログラミング教室の案内や教育教材の情報、また関連するご相談・問い合わせにつきましては下記よりご確認ください。

ECFエデュケーション
キッズも大人も。沖縄からITのマナビを応援します
タイトルとURLをコピーしました