- 勉強会で学習した、基本的なGitコマンドの習得度やブランチ操作の理解度を確認する
- 演習を通して、Git Flowを意識したブランチ操作に触れる
[注]
- この演習は勉強会の参加者の皆さんをテスト(評価)するためのものではありません
- 実際に手を動かし、途中でコマンドや操作を検索したり、勉強会資料を参照したり、試行錯誤しながら実施して頂くことを歓迎します
- 最後まで実施するのが難しい場合、途中までの状態で提出して頂いても構いません
- リモートリポジトリをcloneできる
- ローカルでブランチを切って、ソースコードを変更し、commitできる
- ローカルのブランチで行った変更をリモートにpushできる
- Gitホスティングサービス上でIssueを作成し、Issueにコミットを紐付けることができる
- Gitホスティングサービス上でPull Requestを作成し、マージできる
- ローカルにリモートの変更を反映することができる
- ローカルでマージ作業ができる
- タグを打つことができる
次の準備を行ってから 演習手順 に取り組んでください。
-
~/.gitconfig
に次の設定を記述する[merge] ff = false
-
自身のGithubアカウント、または、RksGitHandsOnに演習用のリポジトリを作成する
- リポジトリ名は任意
- 演習後、作成したリポジトリのURLをお知らせ頂きます
- 後述の 演習手順 はすべてこのリポジトリに対して実施してください
以下の手順に従って、Gitコマンド操作やGithubの操作を実施してください。
勉強会では「管理者」と「作業者」に役割を分けて行なった操作もありますが、今回は1人で2役を担っているつもりで実施してください。
Git Flowにおける、最新の開発バージョンを管理するdevelop
ブランチを追加します。
- リモートリポジトリをローカルにcloneする
master
ブランチからdevelop
ブランチを作成し、リモートへpushする- ソースコードは変更しない
Git Flowにおける、機能開発を行うためのfeature
ブランチを作成し、ソースコードに対して任意の変更を加えます。
変更内容は何でも構いません。変更内容に応じて、後述のIssueのタイトルやコミットコメントを記載してください。
変更の例
- READMEにこの演習課題の内容(markdown形式)を記載する
- 現在時刻を出力するbashスクリプトを追加する
- Hello worldを出力するPHPプログラムを追加する
- Github上で、Issueを作成する
develop
ブランチからfeature/{Issue番号}/{Issueに対する適切な名前}
ブランチ (※以降の手順中では単純にfeature
ブランチと記載する)を作成する- 例:
feature/10/add-helloworld-script
- 例:
feature
ブランチでソースコードに変更を加え、commitする- コミットをIssueに紐付ける
feature
ブランチをリモートにpushする- Github上で、
feature
ブランチからdevelop
ブランチに対するPull Requestを作成する- Pull Requestの本文に変更内容を記載する
- Github上で、
feature
ブランチをdevelop
ブランチにマージする - Github上で、
feature
ブランチを削除する - Issueをクローズする
- ローカルの
feature
ブランチを削除する
Git Flowにおける、最新の安定バージョンを管理するmaster
ブランチに、(ここではv1.0向け機能の開発が完了したと想定した)develop
ブランチの変更をマージし、リリースします(タグを打ちます)。
厳密なGit Flowでは、
develop
ブランチを直接master
ブランチにはマージせず、release
ブランチを介します。 余力がある場合、release
ブランチを用いてリリース対象の変更をmaster
ブランチにマージする手順を実施して頂いても構いません。
- ローカルの
develop
ブランチに、リモートでのdevelop
ブランチの変更を反映する - ローカルで、
develop
ブランチをmaster
ブランチにマージする master
ブランチをリモートへpushするmaster
ブランチでv1.0
というタグを打つ- タグをリモートへpushする
以上で演習は終了です。
事前にご案内した方法で下記の2点を提出してください。
-
演習を実施したGithubのリポジトリのURL
-
master
ブランチで次のコマンドを実行した結果ファイル(~/git-handson.txt
)git branch -a > ~/git-handson.txt git log --graph --oneline --decorate >> ~/git-handson.txt