Knocknote

  1. トップ
  2. コラム一覧
  3. 非エンジニアでも知らないとヤバイGit Part3

非エンジニアでも知らないとヤバイGit Part3

投稿日 : 2018.03.25  |  カテゴリー : 非エンジニアでも知らないとヤバイ

はじめに

今回は競合の解決について説明する。
前回までの記事はこちら
非エンジニアでも知らないとヤバイGit Part1
非エンジニアでも知らないとヤバイGit Part2

競合の発生

リモートリポジトリとローカルリポジトリで同じ箇所を変更していた場合に競合が発生する。
このような場合はどちらの変更を採用するかを自動的に判断することができないためにエラーが発生する。

競合を作る

同じリモートリポジトリを共有している2人のユーザー、User1とUser2を用意する。
まずはUser1でindex.phpにコードを追加する。

画像
Gitを簡単に使用できるGUI、SourceTreeでコミット・プッシュを行う。(コミットメッセージ:おはようございます。を追加)

画像
次に、User1が追加したものと異なるコードを、User2で同じ箇所に追加する。

画像
準備ができたのでターミナルからGitの操作をする。
まず、変更したファイルをステージングに追加する。

git add (ファイル名)
git add index.php

次にコミットメッセージを入力してコミットする。

git commit -m 'コミットメッセージ'
git commit -m 'Good Morning!を追加'

この状態でプッシュするとこのようなエラーが発生する。

git push
To https://bitbucket.org/username/test.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://username@bitbucket.org/username/test.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

これで競合が発生した。

競合の解決

他のユーザーがプッシュしたものがあると書かれているので、まずはプルする。

git pull
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From https://bitbucket.org/username/test
   4754cf1..f75253f  master     -> origin/master
Auto-merging index.php
CONFLICT (content): Merge conflict in index.php
Automatic merge failed; fix conflicts and then commit the result.

index.phpで競合が発生してると書かれている。
エディターで競合しているファイルを開くと競合箇所が表示されている。

画像
今回はUser2の変更内容で競合を解決する。
ピンク色のUse meボタンを押して、競合を解決し再び対象のファイルをステージングに追加し、コミットメッセージに競合解決したことがわかるようにメッセージを入力し、プッシュする。

git add index.php
git commit -m '競合を解決'
git push

User1のSourceTreeでプルをして変更を確認。

画像
User1のローカルリポジトリのindex.php

画像

最後に

今回は競合について説明した。
次回はSourceTreeについて説明する。

この記事を共有する
  • facebookでシェアする
  • ツイッターでつぶやく
  • LINEで送る
関連記事

非エンジニアでも知らないとヤバイPHP Part1

プログラミング経験有無に関わらず知識は必要 タイトルに記載していますように非エンジニアの方(業界問わず)でもプログラミングに関する知識は必要です。昨今世界中においてあらゆる分野において情報化が進んでいます。これは日本も例外ではありません。 ...

非エンジニアでも知らないとヤバイSQL

非エンジニアでも知らないとヤバイSQL Part1

非エンジニアでもエンジニアの知識が最低限必要 IT業界で働いていくには、非エンジニアでもエンジニアの知識がある程度必要です。営業マンやマーケッター、プランナーやデザイナーであっても、同じ業界で働くためには社外の打ち合わせなどはもちろん、社 ...

非エンジニアでも知らないとヤバイSQL

非エンジニアでも知らないとヤバイSQL Part3 〜WHERE句で検索条件を指定〜

SELECT文について 前回は、SQLにてSELECTする際、全カラム抽出、カラム指定抽出、件数指定抽出、OFFSETを使った件数指定抽出についてでした。 DBの種類(「関係型」「NoSQL」「階層型」「ネットワーク型」)、その中でも現 ...

非エンジニアでも知らないとヤバイSQL

非エンジニアでも知らないとヤバイSQL Part2 〜SELECT文でデータ抽出〜

DB、SQLについて 前回の非エンジニアでも知らないとヤバイSQL Part1では、DBの種類(「関係型」「NoSQL」「階層型」「ネットワーク型」)、その中でも現在主流になっている「ネットワーク型」(RDBMS)について、SQLについて ...

非エンジニアでも知らないとヤバイGit Part2

はじめに 前回は、Gitの基本的な機能、リモートリポジトリ・ローカルリポジトリ、コミットについて説明した。 今回は、 Gitの機能の1つであるクローン、Push、Pullについて説明する。 クローンとは 共同で開発を進める際に作 ...

非エンジニアでも知らないとヤバイGit Part1

そもそもGitとは Gitは分散型のバージョン管理システム。 分散型とは、リポジトリと言われる開発過程が保存されているデータベースが自分やチームのマシン(パソコン)に入っているタイプ。 バージョン管理システムは、コードなどの開発過 ...

非エンジニアでも知らないとヤバイSQL

非エンジニアでも知らないとヤバイSQL Part4 〜INSERT句でデータを追加〜

非エンジニアでも知らないとヤバイSQL Part4 〜INSERT句でデータを追加〜 前回はWHEREでテーブルから指定した条件のデータを抽出する方法を学びましたね。 今回はテーブルにデータを追加して拡張してくれるINSERT文について ...

非エンジニアでも知らないとヤバイCPU Part2

コア、クロック周波数 前回の非エンジニアでも知らないとヤバイCPU Part1 では、CPUの処理性能がわかるクロック周波数と、CPUの中心をになっているコアについて触れました。 今回は、処理を効率よく進めるためのキャッシュ ...

非エンジニアでも知らないとヤバイCPU Part1

そもそもCPUとは CPUとは、Central Processing Unitの略で、日本語では中央演算処理装置と言い、別名はプロッセッサーです。 入力装置などから受けっとった値を処理し、出力装置などで結果を出力します。 CPUの内部 ...

非エンジニアでも知らないとヤバイSQL

非エンジニアでも知らないとヤバイSQL Part6 〜似て非なるTRUNCATEとDROP〜

span{font-size:15px;} 非エンジニアでも知らないとヤバイSQL Part6 〜似て非なるTRUNCATEとDROP〜 前回はテーブルのデータの更新と削除を行うための「UPDATE」と「DELETE ...

Knocknote Education(ノックノートエドゥケーション)