master (fetch first)上記のエラーが発生するのは、ローカルリポジトリが古いためだ。リモートリポジトリはgit-ninjaでpushした内容が反映済のため、ローカルリポジトリより新しい状況にある。プルをして最新のファイルを取得しよう。 そうすると以下のエラーが発生する。Auto-merging katon-method.txtCONFLICT (content): Merge conflict in katon-method.txtAutomatic merge failed; fix conflicts and then commit the result.上記エラーを解消して、リモートリポジトリにプッシュして欲しい。※この問題はWindows環境のgit bashを基準に作成しております。環境によっては動作しない可能性があります。"> master (fetch first)上記のエラーが発生するのは、ローカルリポジトリが古いためだ。リモートリポジトリはgit-ninjaでpushした内容が反映済のため、ローカルリポジトリより新しい状況にある。プルをして最新のファイルを取得しよう。 そうすると以下のエラーが発生する。Auto-merging katon-method.txtCONFLICT (content): Merge conflict in katon-method.txtAutomatic merge failed; fix conflicts and then commit the result.上記エラーを解消して、リモートリポジトリにプッシュして欲しい。※この問題はWindows環境のgit bashを基準に作成しております。環境によっては動作しない可能性があります。" />
ログイン

問題2 コンフリクトを解消しよう

Gitの問題

Git

コンフリクトを解消しよう

問題

コンフリクト(競合)を解消しよう!

コンフリクトとは、同じソースコードの同じ箇所に対して修正を行うことだ。
修正行が異なれば、gitが自動的に判断してマージしてくれるが、
同じ行に対しての修正の場合、gitは判断できないため、
開発者に判断を委ねるのだ。ソースコードを自分の目で見て、
修正を行う必要がある。

コンフリクトを発生させるために、前回同様、分身の術で対応することとする。
分身の術については「その7:リモートリポジトリからプルしよう」を参照してほしい。

まず、git-ninjaの中にあるkaton-method.txtを開き、
中身を"karyokusaidai-oilplus"へ変更しよう。
修正完了後、コミットして、リモートへプッシュして欲しい。

次に、git-ninja2の中にあるkaton-method.txtを開き、
中身を"karyokusaidai-gasplus"へ変更しよう。
修正完了後、同様にコミットして、リモートへプッシュ使用とすると
エラーが発生するはずだ。
! [rejected] master -> master (fetch first)

上記のエラーが発生するのは、ローカルリポジトリが古いためだ。
リモートリポジトリはgit-ninjaでpushした内容が反映済のため、
ローカルリポジトリより新しい状況にある。
プルをして最新のファイルを取得しよう。 そうすると以下のエラーが発生する。

Auto-merging katon-method.txt
CONFLICT (content): Merge conflict in katon-method.txt
Automatic merge failed; fix conflicts and then commit the result.

上記エラーを解消して、リモートリポジトリにプッシュして欲しい。

※この問題はWindows環境のgit bashを基準に作成しております。環境によっては動作しない可能性があります。

期待する画面

                  Username for 'https://github.com': [メールアドレス]
Enumerating objects: 8, done.
Counting objects: 100% (8/8), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 430 bytes | 215.00 KiB/s, done.
Total 4 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), done.
To https://github.com/[ユーザー名]/git-ninja.git
4d0b0cc..8c46db7 master -> master
¥Command¥
                
コードのアイコン

解答ソースコード

              ※まず、テキストファイルを直接開き、コンフリクトの箇所を修正する。
$ git add .
$ git commit -m "競合解消"
$ git push origin master
¥Command¥
            
答えのアイコン

解説

コンフリクトを解消できただろうか。コンフリクトが発生したファイルの中身を見ると以下のようになっている。

$ cat katon-method.txt
<<<<<<< HEAD
karyokusaidai-gasplus
=======
karyokusaidai-oilplus
>>>>>>> 4d0b0cc794b887b1f95dff22d8a1654249035c54

上段がgit-ninja2で修正した内容、下段はgit-ninjaで修正した内容だ。 どちらが本来残すべきロジックなのかを開発者同士、相談の上、ファイルを修正してコミットすることが重要だ。 くれぐれも、このままコミットしてpushしてしまうことはないように気をつけてくれ。
ログインして解答を見る
完了にする!
LINEの友達追加でお役立ち動画をGET!!