GitHubはアプリケーションを複数人で開発する際に、非常によく使われるWEBサービスです。
しかし、初めてGitを使う方にとっては、どのような手順でGitHubへの反映を行えばいいのかわからないという方も多いのではないでしょうか。
そこで、本記事ではGitHubの基本的な使い方の手順から、コンフリクトなどの問題が起きた時の対処法までを詳しくご説明していきたいと思います。
GitHubとは
Gitの仕組みを利用して、簡単に複数人での開発ができるようにしてくれるWebサービスです。Gitとはソースコードのバージョン管理システムで、ファイルの更新履歴を記録する仕組みです。
Gitのインストール手順は下記参考サイトが分かりやすかったので、添付しておきます。
GitHub新規登録:https://git-scm.com/
リポジトリとは
ソースコードなどが入っているプロジェクトファイルやディレクトリの変更履歴を保存しておく箱のようなものです。リポジトリにはローカルリポジトリとリモートリポジトリがあります。
ローカルリポジトリ
ローカル環境(自分のPC上)に置く、リポジトリのことを指します。直接、プロジェクトファイル内のソースコードなどを作成・修正します。
リモートリポジトリ
ローカルリポジトリで作成・変更した内容を反映させて更新を行います。外部サーバー上に反映させるために用意した箱をリモートリポジトリと言います。リモートリポジトリはインターネットを介してソースコードなどを共有できるため、チーム開発がしやすくなります。
ブランチとは
複数人で一つのアプリケーションを同時に編集するために不可欠な機能です。プロジェクトの本体から分岐させて作業を行うことで、本体に影響を与えずに開発を行える機能のことをブランチと言います。
プロジェクトの本体となっているバージョンを『masterブランチ』と呼び、各担当者がプロジェクトを作成や修正するときに分岐させたブランチを『トピックブランチ』と呼びます。トピックブランチは各担当者が任意でブランチ名を決めて作成します。
トピックブランチで作成・修正したコードをmasterブランチに反映させることをマージ(merge)と呼びます。
リポジトリのフォーク方法(プロジェクトの本体を自分のGitHub上で共有)
プロジェクトの本体をローカルリポジトリ及びリモートリポジトリに反映させます。
1.管理者の対象となるGitHub上のプロジェクトにアクセスし、画面右上にあるForkを押す
2.自身のGitHub上にプロジェクトが反映されるので、URLをコピペして実行 ※ コマンドプロンプトを開き、cdコマンドでプロジェクトを保存したいディレクトリに移動しておく
>git clone (URL)
3.プロジェクトの本体をリモートリポジトリに追加 ※2でcloneしたプロジェクトにディレクトリを移動しておく
>git remote add upstream (管理者GitHubの対象プロジェクトURL)
4.リモートリポジトリのURLを確認
>git remote -v
トピックブランチを切ってコードの作成・修正を行う
1.トピックブランチを切ります
>git checkout -b (任意のブランチ名)
※既に作成したブランチを使う場合は、ブランチ変更をする。>git branch (ブランチ名)
2.現在のブランチを確認する
>git branch
3.自分のPC上でコードの作成・修正を行う
masterブランチへマージする
1.Gitで管理するための設定ファイルを生成する
>git init
2.変更内容をインデックスに追加して、コミット対象にする
>git add .
3.変更履歴を保存するため、メッセージを付けてコミットする
>git commit -m "コメント"
※コメントは変更履歴として残るため、何をしたかがわかるように書く 例:メッセージ機能の実装
4.トピックブランチで変更した内容をリモートリポジトリにプッシュする
>git push origin (作業ブランチ名)
5.GitHubにアクセスして、プルリクエストを行う
プルリクエストとは変更を本人以外がレビューしてから反映させる機能のことです
『Compare & pull request』 を押す。
6.変更内容をコメント欄に記入して『Create pull request』を押す
7.チームメンバーはプルリクエストの内容を確認して、問題が無ければ「確認しました」などとコメントする
マージできる権限を持つ管理者が『Merge pull request』を押して、マージを行う
9.最後にマージしていいか確認されるので『Confirm merge』を押して完了
次のコメントが表示されれば正常にマージ完了
リポジトリを最新のプロジェクトに更新
1.作業ブランチをmasterに変更
>git checkout master
2.Fork元のリポジトリの更新分を取得
>git pull upstream
3.取得した更新分をリモートリポジトリにマージする
>git merge upstream/master
4.ローカルリポジトリにプッシュして作業しているPC上に反映
>git push origin master
コンフリクトが発生した場合の対処方法
コンフリクトとは、複数人が同じファイルのソースコードを修正した状態でマージした時に起こる「衝突」です。平たく言うと、自分の作業と他人の作業が重複してしまった状態です。
1.GitHub上のマージするタイミングで「This branch has conflicts that must be resolved」となっていた場合、『Resolve conflicts』を押してコンフリクトを解消する
2.残したいコード以外を削除する
「<<<<< first_branch」から「=====」で囲まれている部分が、自分が作業したブランチの変更内容です。
「=====」から「<<<<< master」で囲まれている部分が、他の人が作業した変更内容です。
3.コード修正後、『Commit merge』を押す
以降は、通常通りマージを行えます。
最後に
非常によく使うGitコマンドを目的別に順を追って解説しました。まだまだ初心者の僕ですが、GitHubやGitコマンドを初めて使う人やコマンドを毎回調べてるって方のお役に立てたらうれしいです。随時アップデートしていく予定ですので、ブックマークなどしてすぐ確認できるようにしておくと便利かと思います。