そんな悩みに現役エンジニアがお答えします。
この記事では、初心者ユーザ向けにGitHubを使用した開発フローを理解できるチュートリアルを紹介します。
上から順にやっていくことで一通りの流れを体験できます。
本記事の狙い
- GitHub を使用した開発の基本的な流れを手を動かしながら理解できる
- 忘れても見返せばすぐコマンドが使える
※この記事は、GitHubでオススメされる開発ワークフローのGitHub Flowを参考に作成しています。
Git インストール
Windowsの方は下記の記事を参照してGitをインストールしてください。
-
5分でできるGit for Windowsインストール方法を紹介
悩む人Windows に Git をインストールする方法がわからない そんな悩みを解決します。 超簡単なので文字読まなくてもOK! 10回以上ポチポチするだけ 現役エンジニアが2020/ ...
続きを見る
Macの方は下記のサイトを参考にインストールしてください。
https://git-scm.com/download/mac
Git 初期設定
下記のコマンドを実行して、ユーザー名とメールアドレスを設定してください。
git config --global user.name ユーザー名
git config --global user.email メールアドレス
下記コマンドで設定を確認できます。
git config --global --list
リモートリポジトリ作成
GitHubにサインインし、自分のリポジトリページを開いてください。
「New」をクリックします。
リポジトリ名、リポジトリの種類(公開or非公開)などを入力して、「Create repository」をクリックします。
- READMEはGitHub上でリポジトリの説明ページとなるので作っておいた方が良いです。
- .gitignoreは、gitリポジトリの管理対象外ファイルを定義するためのファイルです。
管理するソフトウェアの言語に合わせて選択してください。 - licenseは、このソフトウェアの権利に関するルールを定義します。任意のものを選択してください。
リポジトリが作成されると、上記のように表示されます。
ローカルリポジトリ作成
GitHubに作成したリモートリポジトリから、ご自身の端末にローカルリポジトリを作成します。
GitHubのリポジトリページで「Code」をクリックして、リポジトリのURLをコピーしてください。
ご自身の端末にて、ローカルリポジトリを作成したいディレクトリでコマンドプロンプトを開き、下記のコマンドを実行してください。
ユーザ名とパスワードを求められたら入力してください。
git clone リポジトリURL
例:
git clone https://github.com/tako-xyz/testrepository.git
cd testrepository
Issue作成
作業開始時にどんな理由で作業しているのかを記録するために Issueを作っておきましょう。
Issueは、課題管理の課題みたいなものです。
リポジトリの「Issues」タブを開いて、「New issue」をクリックします。
Issueのタイトル、説明文を入力して「Submit new issue」をクリックします。
Issueが作成されると、番号が振られます。
その番号を作業用ブランチ名で使用するので覚えておいてください。
作業用ブランチ作成
masterブランチ(デプロイ用のリポジトリ)に影響を与えないで、変更作業を行うために作業ごとにブランチを作成します。
GitHubのリポジトリページの「master」をクリックしてください。
「Switch branches/tags」の欄にブランチ名を入力して「Create branch: xxxx from 'master'」をクリックしてブランチを作成してください。
ブランチ命名規則としては、下記のような形式がオススメです。
- バグ修正目的の場合:bugfix/#issueNo_作業名
- 機能追加目的の場合:feature/#issueNo_作業名
- ブランチとは、ある時点でのリポジトリの状態を複製して別名で保存したものになります。
- masterブランチは、デプロイ可能な状態のリポジトリのことです。
- 作業用ブランチは、バグ修正や機能追加のためにmasterブランチから分岐させたリポジトリのことです。
リモートリポジトリの情報を取得するために下記のコマンドを実行します。
git pull
リモートブランチの一覧を表示するために下記のコマンドを実行します。
git branch -r
下記のように作業用ブランチ名が確認できます。
origin/HEAD -> origin/master
origin/feature/#1_add_xxxx
origin/master
この作業用ブランチ名の「origin/」を除いたものを使って、ブランチを切り替えるために下記のコマンドを実行します。
git checkout feature/#1_add_xxxx
ブランチが切り替わったことを確認するために下記のコマンドを実行します。
git branch
「*」がついてるものが現在のブランチを表しています。
* feature/#1_add_xxxx
master
ファイル変更
ご自身の好きな方法でファイルの作成や修正などを行ってください。
GitHubのリポジトリには、認証情報が含まれるデータをアップロードしないように気を付けてください。
悪意のあるユーザのBotが巡回しており不正アクセスに使用される可能性があります。
- 内部サービスや環境の認証情報
- 秘密鍵ファイル
- ハードコードされたユーザ名とパスワード
- ハードコードされたAPIキー
- ハードコードされたOauthトークン
変更のコミット
ファイルの修正が終わったら、変更されたファイルを確認するために下記のコマンドを実行します。
git status
下記のように表示されます。
On branch feature/#1_add_xxxx
Your branch is up-to-date with 'origin/feature/#1_add_xxxx'.
Untracked files:
(use "git add <file>..." to include in what will be committed)
index.html
nothing added to commit but untracked files present (use "git add" to track)
変更されたファイルをインデックスに追加するために下記のコマンドを実行します。
これは変更履歴に乗せる対象ファイルを一時的に選択する操作になります。
git add ファイル名
インデックスに追加したファイルの変更をコミットするために下記のコマンドを実行します。
これは変更履歴のデータに名前を付けて保存するような操作になります。
git commit -m "変更理由のコメント"
例:
git add index.html
git commit -m "add index.html"
リモートリポジトリ反映
リモートリポジトリに変更を反映させるために下記のコマンドを実行します。
git push origin 作業用ブランチ名
実例:
git push origin feature/#1_add_xxxx
プルリクエスト作成
GitHubのリポジトリのページを開くと、pushされたことを示すメッセージが表示されています。
「Compare & pull request」をクリックして、プルリクエストを作成します。
プルリクエスト名と説明文を入力して、プルリクエストを作成するために「Create pull request」をクリックしてください。
説明文にIssue番号を「#No」のように入れるとIssueとプルリクエストを紐づけることができます。
自動的に作業用ブランチが、masterブランチにマージできるかチェックしてくれます。
この状態でレビュアー担当者がいれば、レビューしてもらうといいでしょう。
レビュー
レビュアー担当者にここでコードのダメ出しやコメントをもらってください。
修正が必要であれば、また変更をコミットしてPushすればここに反映されます。
変更の差分を確認したい場合は、「File changed」のタブをクリックしてください。
下記のように変更の一覧が確認できます。
テスト
レビューしてもらったら、検証環境などで作業用ブランチのソフトウェアをテストするといいでしょう。
検証環境にて、GitHubからソースを取得してデプロイ後、テストしてください。
※ここのやり方は、開発チームによってやり方が異なると思いますので、一例になります。
下記のコマンドは作業例になります。
例:
git clone https://github.com/tako-xyz/testrepository.git
cd testrepository
git branch -r
git checkout feature/#1_add_xxxx
git branch
- リポジトリをクローン
- リモートブランチの一覧を表示
- ブランチを切り替え
- 現在のブランチ確認
作業用ブランチをマージ
コードレビュー、検証環境でテストがOKだった場合、作業用ブランチをmasterブランチにマージ(統合)しましょう。
「Merge pull request」をクリックしてください。
紐づいたIssueをクローズするためにコメントに「close #No」と入れて、「Confirm merge」をクリックしてマージしてください。
マージが完了すると、上記のように表示されます。
この時点でブランチが必要ない場合は、「Delete branch」をクリックして削除してください。
デプロイ
masterブランチにマージしたら、本番環境へデプロイしてください。
デプロイの方法は、ソフトウェアの性質、環境に合わせて検討してください。
作業用ブランチ削除
作業用ブランチが必要なくなった場合、削除しましょう。
リポジトリページの「Branch」をクリックしてください。
ゴミ箱のアイコンをクリックして、作業用ブランチを削除してください。
削除が完了すると、上記のように表示されます。
ローカルリポジトリのローカルブランチを削除したい場合、下記のように作業してください。
マージ済みのブランチを表示するために下記のコマンドを実行してください。
※ 「*」がついてないものがマージ済みのブランチになります。
git branch --merged
マージ済みの作業用ブランチを削除するために下記のコマンドを実行してください。
git branch -d マージ済み作業用ブランチ名
例:
git branch --merged
git branch -d feature/#1_add_xxxx
基本的な流れは以上です。
CI&CDが整っていたらまた微妙に違ってくるかと思いますが、各組織の運用ルールに合わせて対応していただければと思います。
閲覧ありがとうございました。
参考ページ: