13
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GitHubハンズオン 第3回 ~ブランチ運用法編~

Last updated at Posted at 2023-04-16

GitHubハンズオン 第3回 ~ブランチ運用法編~

本記事は、GitHubハンズオンの第3回の資料です!
過去の記事を読んでいることを前提としていますので、ご注意ください。

GitHubハンズオンシリーズ

リポジトリの準備

第1回ハンズオン で作成した GitPractice リポジトリを今回も使います!

もし、リポジトリを削除してしまった方は、再作成をお願いします!

Forkを開き、フェッチ&チェックアウトして、mainブランチを最新にしてください。

ブランチ運用法

ブランチの使い方には色んな流派がありますが、ここでは有名な GitHub Flow を紹介します!

GitHub Flow

GitHubでは、数千人規模のプログラマーが、1つのリポジトリで共同開発することもよくあります。

そんな状況でも、混乱が発生しないように編み出されたブランチ運用法が、 GitHub Flow です。

以下のルールを守って、ブランチを運用します。

  • mainブランチからtopicブランチを生やす。
  • mainブランチは常にリリース可能な状態にしておく。
  • topicブランチはこまめにプッシュする。

image24.png

(厳密には、PullRequestを利用したコードレビューもGitHub Flowのルールに含まれますが、今回のハンズオンではPullRequestを扱いませんので、説明は省略いたします。)

mainブランチからtopicブランチを生やす

何か作業をするときは、mainブランチからtopicブランチを生やします。
mainブランチ上で作業しないようにしましょう!
あくまで、mainブランチはtopicブランチをマージするときだけ進みます。

topicブランチ命名例

topicブランチの名前は、なんのためのブランチなのか説明する内容にしておきましょう!

たとえば、 ボタン機能を追加 した場合、以下のような命名案があります。

  • topic/作業名
    • 例: topic/add-button
  • 作業種別/作業名
    • 例: feature/add-button
    • ここでの作業種別とは、以下のようなものです。
      • feature : 機能開発
      • fix : バグ修正
  • 作業者名/作業名
    • 例: segur/add-button
  • 作業者名/課題番号/作業名
    • 例: segur/123/add-button
    • ここでの課題番号とは、課題管理ツール(GitHub Issue, JIRA等)で発行される番号のことです。

/- の違いは後ほど説明します!
単語の区切りは - が一般的ですが、 _ や大文字区切りでも、Gitは動作します。

mainブランチは常にリリース可能な状態にしておく

他のメンバーが安心してmainブランチを利用するために、動作が不安定になるtopicブランチを、mainブランチにマージしてはいけません。

たとえば、実行するとエラーが発生する状態のtopicブランチをAさんが作ったとして、それをmainブランチにマージしてしまうと、Bさんがそのmainブランチを利用するときにエラーが発生してしまいます。

Bさんからすると、なぜエラーが発生するのかを調査する必要があり、ムダな時間をとられてしまいます。

動作が不安定なtopicブランチをmainブランチにマージしてはいけません。

image20.png

  • ✅: UnityAssetを導入し、動作確認せずに、topicブランチにコミットする。
  • ❌: UnityAssetを導入し、動作確認せずに、topicブランチにコミットし、それをmainブランチにマージする。
  • ✅: UnityAssetを導入し、topicブランチにコミットする。動作確認をしたところ、エラーが見つかったので、修正してから、mainブランチにマージする。

topicブランチは定期的にPushする

チーム開発では、作業の共有が重要になります。

Aさんがtopicブランチを1週間に1回プッシュすれば、Bさんはその内容を1週間に1回確認できます。
Aさんがtopicブランチを毎日プッシュすれば、Bさんはその内容を毎日確認できます。

情報共有をこまめにするほうが、ブランチが競合したり、作業が重複することを避けることができます。

なるべく毎日プッシュするようにしましょう!

ブランチ用語

GitHub Flow ≠ Git Flow

ブランチ運用法について調べると、Git Flowという用語を見かけますが、これはGitHub Flowとは別の流派です!
名前が似ているのでご注意ください。

Git Flowは、GitHub Flowにdevelopブランチを追加するアイデアです。

topicブランチ = featureブランチ

ブランチについて調べると、featureブランチという用語を見かけますが、これはtopicブランチの別名です。

  • GitHub Flowでは、topicブランチ
  • Git Flowでは、featureブランチ

と呼ぶ慣習があります。

日本語だと、機能ブランチ・支流・枝などと呼ぶ人もいます。

mainブランチ = masterブランチ

ブランチについて調べると、masterブランチという用語を見かけますが、これはmainブランチの昔の名称です。
masterには「奴隷の主人」という意味があり、人権問題の観点からセンシティブなので、あまり使われなくなりました。

https://www.publickey1.jp/blog/20/githubmainmastermain.html

日本語だと、統合ブランチ・本流・幹などと呼ぶ人もいます。

ブランチの整理

ブランチ名にスラッシュを入れる

自分の名前/update-read-me というブランチを作って、READMEの内容を変更し、コミットしてください。

image25.png

Forkの左側の Branches を見ると、自分の名前のフォルダーができています。

ブランチ名に / を入れると、Forkがフォルダーとして表示してくれるためです!

image13.png

ブランチが大量にあると、フォルダーで整理した方が、見通しがよくなるので、積極的に使っていきましょう!
- はフォルダーにはならないので、使い分けていきましょう!

さいごに

今回はここまでです!おつかれさまでした!

次回はいろいろ取り消し編です!引き続きこちらも実践していただけると嬉しいです!

本記事作成にあたり、以下の記事を参考にさせていただきました。ありがとうございました!

13
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?