Git, GitHubを使用してGit-Flowを構築する


概要

 共同開発やポートフォリオとしてソースコードを公開することを念頭に置いたアプリケーションを開発する場合、GitHubで管理することが必要となる。その際に発生するGitHubとGitの初期設定についてまとめた。今回はGit-Flowに基づいた開発をすることを想定し、開発を始めるまでを構築していく。このやり方は一例であり、他にもやり方はあると思いますので参考までに。

Git-Flowについて

 Git-Flowについての記事はよく見かけるため、ここでは簡単に説明する。大まかにmainブランチ、releaseブランチ、developブランチ、featureブランチが存在する。

  • mainブランチ
    • 常にリリース可能である安定したブランチ
  • releaseブランチ
    • リリースが行わる際に発生するブランチ
    • リリースバージョンの付与などを行う
  • developブランチ
    • 開発の中心となるブランチ
    • featureブランチの組み込みブランチとしての役割を持つ
  • featureブランチ
    • developから機能開発を行う際に作成されるブランチ
    • 基本的には何か変更行う際にはまずfeatureブランチを作って変更を行い、終わったらdevelopにマージするというプロセスが一般的

 Git-Flowでは、用途に応じた様々なブランチが存在するが、今回は開発を始めるための最低限の必要なmainブランチ、developブランチ、featureブランチの作成について述べる。

1. GitHubでの設定

  • リモートリポジトリの新規作成
    • リポジトリ名、説明文を記載。
    • 公開するのか、公開しないのかを選択
    • README.md, .gitignore, licenseファイルは今の段階では作成しない
    • 記入出来たら"create repository"を押す

2. Gitでの設定

2.1 リモートリポジトリをクローンする

1.で作成したリポジトリをクローンする。

shell
$ git clone https://github.com/Yuki-TU/next.git
Cloning into 'next'...
warning: You appear to have cloned an empty repository.

2.2 README.mdファイルの追加・編集

 README.mdファイルを作成する。README.mdは、リポジトリの概要や説明をするためのファイルであり、マークダウン記法に則って記述することができる。

shell
$ touch README.md
$ nano README.md     # 好きなエディタで編集
README.md(例)
# 概要
これはnext.jsによるプロジェクトです

2.3 コミットする

 作成したファイルをコミットする。

shell
$ git add .
$ git commit -m "README.mdの追加"

2.4 GitHubにpushする

 mainブランチにリネームし、pushする。pushは、ローカルブランチのリポジトリをリモートリポジトリにアップロードするときに使用するコマンドである。ここでは、originがリモートリポジトリのURLを表している。

shell
$ git branch -M main       # ブランチ名をmainにリネーム
$ git push -u origin main  # -uはリモート追跡ブランチを作成するオプション

3. 再びGitHubでの設定

 GitHubの該当リポジトリを見ると、mainブランチが更新されていることがわかる。Git-Flowでは、mainブランチは品質が保証されたリリース用ブランチであり、普段開発を行うブランチはdevelopブランチの方を使用する。以下、developブランチを作成する手順を示す。

3.1 developブランチの作成

 create a branchより、mainブランチよりdevelopブランチを作成。

3.2 developブランチをデフォルトブランチに設定する

開発する際のメインブランチはdevelopブランチであるため、デフォルトブランチをdevelopブランチに設定する。GitHubの各種リポジトリのsetting->branch->default branchより変更する。

4. ローカルにdevelopブランチを落としてくる

 以下のコマンドを実施することで、developブランチをローカルブランチとして保存することができる。

shell
$ git fetch         # リモート追跡ブランチの更新
$ git branch -a     # リモート追跡ブランチとローカルブランチの表示
* main
  remotes/origin/develop
  remotes/origin/main
$ git switch -c develop remotes/origin/develop   # リモートリポジトリで作成したdevelopブランチをdevelopという名前でローカルに保存
$ git branch       # ローカルブランチの表示
* develop
  main

5. featureブランチの作成

 最後にfeatureブランチの作成について述べる。まず、developブランチに移動する。そして、pullコマンドを実行して、developブランチを最新の状態にする。次に、developブランチからfeatureブランチ(下記例ではブランチ名:feature/issue#1/create_base_app)を作成し、featureブランチに移動する。この状態で機能を実装するソースコードを記述する。

shell
$ git switch develop      # developブランチに移動
$ git pull                # fetch + merge(通常はdevelopブランチは最新の状態にする)
$ git switch -c feature/issue#1/create_base_app     # developブランチよりfeatureブランチを切って移動

最後に

 以上で、developブランチとmainブランチ、featureブランチを作成することができた。あとは、featureブランチ上でコードを作成し、プルリクエスト送り、developブランチにマージするという開発を行えばよい。
 間違っている個所等ございましたら、コメントいただけると幸いです。

参考