Gitシリーズ第6回はコンフリクト編です。本記事は「Gitを使ってみよう!」というシリーズで作成している記事の1つになります。下記のリンクより、第1回からの記事を閲覧できます。GitGitの事を、学んで試せるページとなっています。Gitを利用される方に最適です。今回から複数のプログラマーによる開発がスタートします。そんな中、Gitがどんな風に活躍するかを見ていきたいと思います。work02というフォルダを作成し、クローンします。https://github.com/MichiharuT/hello_repo.gitクローンできていることを確認します。バイトの空き領域C:\work02\hello_repo>ここが新しいプログラマBさんの作業フォルダだとします。現在の状態を図にすると、次のようになります。それではprogram02.txtを開いて作業を行ないます。表示するための機能B12表示するための機能A表示するための機能B表示するための機能Bができましたので、コミットしましょう。commitコマンドの順で実行します。deletion(-)C:\work02\hello_repo>コミットが完了しました。表示するための機能Bを作成したBさんは、そのままリモートリポジトリにPushすることにしました。master一方でAさんが同じprogram02.txtに対し、別の機能を追加していたとしましょう。C:\work01\hello_repoに移動します。C:\work01\hello_repoprogram02.txtを開き、次のようにします。表示するための機能C12表示するための機能A表示するための機能C機能Cの追加が終わりましたので、コミットしましょう。deletion(-)コミットが完了しました。AさんもリモートリポジトリへPushすることにしました。pushコマンドを実行します。details.C:\work01\hello_repo>リモートリポジトリへのpushに失敗しました。理由はリモートリポジトリへ統合(マージ)する際に競合(Conflict)が発生してしまったためです。競合とは、ファイルを編集した箇所が他の作業者と重複してしまい、うまくマージできない状態の事を言います。今の状態を図に示すとこんな感じです。Aさんが作成した機能もBさんが作成した機能も今回のプログラムには欠かせない機能なので、「表示するための機能B」と「表示するための機能C」の両方がprogram02.txtに入るように、ファイルを手直しする必要があります。この作業を競合の解決といいます。手直しするためには、一旦リモートリポジトリの内容をローカルリポジトリに持ってくる必要があります。この操作をPullといいます。次のコマンドを実行しましょう。CONFLICTと表示されています。program02.txtを自動マージしようとして失敗したというメッセージが出ています。ここでprogram02.txtを開いてみましょう。次のようになっています。これはリモートリポジトリ側とローカルリポジトリ側でどのような違いが発生しているかを示しています。5c646b6a1972af939e85d7273b6d0f95a24e5d52は、どのコミットオブジェクトかを示すものです。このファイルを見て修正を行なっていきます。そのまま、program02.txtを編集しましょう。表示するための機能C123表示するための機能A表示するための機能B表示するための機能Cこれで機能A~Cがすべて入りました。AさんBさん両者の作業が報われたことになります。これで競合は解決です。新しくなったprogram02.txtをコミットし、リモートリポジトリへのPushまで一気に行きましょう。