🐰

Git ワークフロー

2023/01/28に公開

GitHub Flow

  • Git Flow
    Gitを最大限に活用できるが複雑
    2010年にオランダのエンジニアVincent Driessen氏がブログに書いたのが始まり!

  • GitHub Flow
    シンプル。1日に何度もデプロイするチームで使いやすい。
    GitHub社内で実践しているGitのワークフロー
    GitHub共同創業者のスコット・チャコン氏が、ブログで公開

GitHub Flowのルールと流れを知ろう

  • GitHub社が行なっているGitHubFlowのルール(要約)
  • GitHub Flowのワークフロー

GitHub社が行なっているGitHubFlowのルール

  1. メインブランチは即座にデプロイ可能な状態を保つ。
  2. ブランチ上で必ず作業し、その生存期間をできるだけ短くすること。
  3. (変更したら、)すぐにPull Rrquestを作り、フィードバックやサインオフを求める。
  4. マージしたらすぐにデプロイをすること。

デプロイとは、、
ソースコードをサーバーに配置して稼働させること

Pull Rrquest(プルリクエスト、プルリク、PL)とは、、
GitHubにあるGitリポジトリに対して、変更したソースコードを取り込んでもらえるようにリクエストするための機能

サインオフとは、、
日本語で言うと承認をもらうといったニュアンス

ワークフロー

  1. なにをすべきかを決める。
  2. mainブランチから説明的な名前のブランチを作成する。
  3. ブランチをgit pushして、コードをチームメンバーにシェア。
  4. Pull Request作成。
  5. コードを書く&コードの修正。(議論しながら)
  6. テスト。
  7. mainブランチを、デプロイするPull Requestブランチにマージ。
  8. テスト環境にデプロイ。
  9. テスト。
  10. 本番環境にデプロイ。
  11. 様子を見る。
  12. Pull Requestブランチを、マスターブランチにマージ。

補足

  • Pull Requestブランチをメインブランチにマージしてから、メインブランチをデプロイする、と言うことが多い印象。
  • これは良い悪いの判断ができないが、github社が行なっているワークフローからアレンジされている点に留意。

流れ

  1. GitHubで新規リポジトリ作成
  2. clone
  3. mainブランチからfeature-helloブランチを作成
  4. 開発
  5. push
  6. GitHubでPull Requestを出す
  7. コードレビュー
  8. コードの修正
  9. 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ボタンをクリックしてプルリクエストを作成

特定の人にレビューをお願いしたい場合は、、
@ユーザー名
とするとユーザーに通知がいく!!

コメントの部分はマークダウンを使うことができる!
ヘルプページ
https://docs.github.com/ja/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax

レビュワーは、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