【Git第6回】GitHubを利用した開発手順の流れ

【Git第6回】GitHubを利用した開発手順の流れ

GitとGitHubのプログラミングメモ第6回です。何回かに分けてメモを投稿していきます。

なお、この記事はプログラミングメモですのでどんどん追記していきます。

【参考資料】
>> 【Udemy】Git: もう怖くないGit!チーム開発で必要なGitを完全マスター

【関連記事】


現役エンジニア GitとGitHubの使い方

筆者の観測範囲で記載していく。

運用方法

タスクスタートから完了までの流れは以下の通り

# タスクスタート

# 改修作業を実施
## ローカル
GitHubのIssueに対応する作業ブランチをmasterブランチやDeveiopブランチから作成

※ブランチ名例
 prefix + 追加修正する機能名 # 書き方

 feature/add_id_column    # 機能追加
 fix/*****                # 不具合改修


## ローカル作業変更
↓
git status           # 変更したファイルの一覧を見る
git diff             # 差分を確認
git add -A           # 問題なければ
git commit -m        # 問題なければ
 ※ コミットメッセージ 英語で記載

git push origin HEAD # GitHubのリモートブランチにpush
 ※ ブランチ名指定なしでカレントブランチをリモートにpushすることができる


## pushしたブランチからプルリクエストを作成
↓ ※テンプレートがある場合はそれに必要事項を記入

## Reviewersを選択
 ※ プルリクエストのコメントにClose #Issue番号(IssueのURL)を入力しておくと
   プルリクがマージされた際にIssueが同時にCloseされる
 ※ 最近ではSlackに連携しているPJTも多い

# レビュー後改修依頼あり
 ローカル環境で改修実施
 ↓
 再度以下を実施
git add       # 再度
git commit    # 再度
git rebase -i # コミットを一つにまとめる
git push -f origin HEAD

# マージ
GitHub上でLGTMをもらう
↓
プルリク画面でマージを実行
↓
タスククローズ

GitHub上でプルリクOKについて

  • LGTM # Looks Good To Me/良さそうです
    GitHub上でプルリクにOKを出す際はLGTMとコメントすることが多い
  • Approve Reviewerのうち誰か一人がApproveするまでマージ不可の設定にすることもできる
  • 「Automatically head branches」が設定され、作業ブランチは自動的に削除される場合が多い
  • 「Allow sqush mergin」マージされる際には自動的にコミットが一つにまとめられる

## ローカル環境
# masterブランチを更新しておく → 次のタスクに備える
git checkout master
git pull origin master
↓
手順終了

その他よく使うコマンド

git stash # 作業中に他のブランチの作業をしたい場合、今の環境を退避させる
git reset # 直前のaddやcommitを取り消す

コンフリクトについて

  • 個人開発ではなかなか遭遇しない
  • チーム開発では頻繁に遭遇する
  • コンフリクトの解消方法については把握しておく必要あり

プルクエスト

プルリクエストとは?

自分が変更したコードをリポジトリに取り込んでもらえるように依頼する機能


GitHub Flowを利用した開発手順

GitHub社が用いているワークフロー

・masterからプルリクエスト用のブランチを作成
・ブランチで開発
  ↓ 
・プルリクエストを依頼
・問題なければ変更箇所がmasterに取り込まれる
・プルリクエスト用のブランチは削除される

GitHub Flowを実践する上でのポイント

  • masterブランチは常にデプロイできる状態に保つ
  • masterブランチから新しいブランチを作成してスタート
  • 作成した新しいブランチ上で作業し、コミットする
  • 定期的にPushする
  • masterにマージするためにプルリクエストを使う
  • 必ずレビューを受ける
  • masterブランチにマージしたらすぐにデプロイする
    ※テストとデプロイは自動化しておく

GitHubFlow ハンズオン

# カレントブランチを確認
$ git branch

# 変更がないことを確認
$ git status

# マスターからpullする(マスターが最新であることを確認)
$ git pull origin/master

# 開発用のブランチを作成する
$ git checkout -b 'test-feature'

# コードを変更してみる
# index.htmlに追記してみる

# プルリクエストを実施
$ git add index.html
$ git commit -v
$ git push origin/master

# 以降はGitHub上での操作
> GitHub上でプルリクエストを実施する
> 問題なければ承認される
> マージする
> 開発用のブランチを削除する

# デプロイ
本番環境にデプロイする(されたことを確認する)
以上でGitHub側は作業完了

# 後片付け
# GitHubのリモートの内容をローカルに取り入れる 開発用のブランチを削除する
$ git pull origin master
$ git branch -d test-feature