Git ワークフロー
GitHub Flow
-
Git Flow
Gitを最大限に活用できるが複雑
2010年にオランダのエンジニアVincent Driessen氏がブログに書いたのが始まり! -
GitHub Flow
シンプル。1日に何度もデプロイするチームで使いやすい。
GitHub社内で実践しているGitのワークフロー
GitHub共同創業者のスコット・チャコン氏が、ブログで公開
GitHub Flowのルールと流れを知ろう
- GitHub社が行なっているGitHubFlowのルール(要約)
- GitHub Flowのワークフロー
GitHub社が行なっているGitHubFlowのルール
- メインブランチは即座にデプロイ可能な状態を保つ。
- ブランチ上で必ず作業し、その生存期間をできるだけ短くすること。
- (変更したら、)すぐにPull Rrquestを作り、フィードバックやサインオフを求める。
- マージしたらすぐにデプロイをすること。
デプロイとは、、
ソースコードをサーバーに配置して稼働させること
Pull Rrquest(プルリクエスト、プルリク、PL)とは、、
GitHubにあるGitリポジトリに対して、変更したソースコードを取り込んでもらえるようにリクエストするための機能
サインオフとは、、
日本語で言うと承認をもらうといったニュアンス
ワークフロー
- なにをすべきかを決める。
- mainブランチから説明的な名前のブランチを作成する。
- ブランチをgit pushして、コードをチームメンバーにシェア。
- Pull Request作成。
- コードを書く&コードの修正。(議論しながら)
- テスト。
- mainブランチを、デプロイするPull Requestブランチにマージ。
- テスト環境にデプロイ。
- テスト。
- 本番環境にデプロイ。
- 様子を見る。
- Pull Requestブランチを、マスターブランチにマージ。
補足
- Pull Requestブランチをメインブランチにマージしてから、メインブランチをデプロイする、と言うことが多い印象。
- これは良い悪いの判断ができないが、github社が行なっているワークフローからアレンジされている点に留意。
流れ
- GitHubで新規リポジトリ作成
- clone
- mainブランチからfeature-helloブランチを作成
- 開発
- push
- GitHubでPull Requestを出す
- コードレビュー
- コードの修正
- feature-helloブランチからmainブランチにマージ
git clone
で既存リポジトリをクローン
git clone リポジトリ名
既存のリポジトリをローカル環境に複製するコマンドのこと
↓
git clone https://github.com/[ユーザー名]/[リポジトリ名].git
privateリポジトリの場合は、
git clone時にパスワード認証かSSH公開鍵の設定が必要!
↓
feature-helloブランチを作成
git checkout -b feature-hello
↓
ファイルを作成
touch hello.rb
↓
hello.rbファイルを編集!
puts 'Hello!'
↓
編集したファイルをコミットしていく
git add hello.rb
↓
差分を確認
新しく行が追加されている
git diff HEAD
↓
差分が確認できたらコミット
git commit -m "add hello"
↓
ログを確認
git log -p
Helloと出力するプログラムを追加した
↓
これをリモートリポジトリにプッシュ
git push origin feature-hello
パスフレーズを入力してプッシュが完了
このように作業のキリがいいところでリモートリポジトリにプッシュするようにする!!
- 他の開発者が確認できるようにしておく
- ローカル開発環境が壊れたことを想定したバックアップの意味合いもある
出勤できなくなった時にも他の開発者に引き継ぎしやすい
GitHubのサイトで確認!
hello.rbファイルをクリックすると、コードが確認できる
↓
feature-helloリポジトリのCompare&pull requestボタンをクリック
↓
feature-helloからmainへのプルリクエストであることを確認
writeにコメントを書く
例えば、- Helloと出力する機能
Create pull requestボタンをクリックしてプルリクエストを作成
↓
特定の人にレビューをお願いしたい場合は、、
@ユーザー名
とするとユーザーに通知がいく!!
↓
コメントの部分はマークダウンを使うことができる!
ヘルプページ
レビュワーは、Files changedをクリックしてコードのレビューをする
気になるところがあればコメントをする
@ユーザ名 コメント
Start a reviewボタンをクリックしてコメントを追加
↓
そのレビューが妥当だと思ったらコードを修正!!
保存してコミット
リモートリポジトリにプッシュ
↓
GitHubを確認
また同じところへ戻って
@ユーザ名 修正した旨と、レビューを依頼する。
↓
修正されていることを確認したら
@ユーザ名 修正を確認しました、マージしてください
↓
といったやりとりをしてレビューを完了させる
マージする人は開発者本人だったり、レビューした人だったり、プロジェクトごとに異なる!
マージする場合
Merge pull requestをクリック
↓
コメントを入力
例えば、こんにちはと出力する機能をマージ
↓
confirm mergeボタンをクリック
これでfeature-helloブランチががmainブランチにマージされた
次にローカルブランチでも確認する!!
mainブランチに切り替え
git checkout main
↓
ブランチを確認、mainブランチが選択されていることを確認
git branch
↓
lsでファイル一覧を表示
ローカルのmainブランチではREADME.mdファイルしかない
最新のリモートブランチの内容を取得する
git pull
パスフレーズを入力
↓
lsでもう一度確認
hello.rbファイルが追加された
これでローカルリポジトリとリモートリポジトリの同期が取れた
φ(・・
そして、次の機能を開発するときは、
またmain
ブランチから新しくブランチを作成して、
機能を開発して、プルリクエストを出して
mainにマージする
この繰り返し!!!
ブランチの削除をしよう
ブランチの削除を実行できる
- リモートブランチ、ローカルブランチの削除
リモートブランチ、ローカルブランチは放置しておくと
どんどん溜まる一方なので不要なブランチは削除して整理することもできる!
〜〜リモートブランチの削除について〜〜
リモートブランチの一覧を表示
git branch --remote
↓
ブランチを削除
git push --delete origin ブランチ名
↓
パスフレーズを入力
↓
リモートブランチの一覧を表示して確認
git branch --remote
↓
ブランチが削除できた!
〜〜ローカルリポジトリの削除について〜〜
ローカルブランチ一覧を表示
git branch
↓
ブランチを削除
git branch --delete ブランチ名
↓
ブランチ一覧を表示して確認
git branch
↓
ブランチが削除できた!
補足
-Dでも同様に削除できる
git branch -D ブランチ名
ローカルとリモート両方の一覧を確認するには
git branch -a
今日でGit/GitHub一通り完了!
また使いながら細かいところは調べて自分のものにしていきたい!
Discussion