1
2

More than 3 years have passed since last update.

初学習者でも使いたいgitとgit-flow

Last updated at Posted at 2020-06-01

はじめに

最近、やっとこさgitに慣れてきました。ただこんなことが起こったんですよね。ミスがあって振り返りしてる時に「ブランチ消しちゃったし、どのコミットで何をしたのかわからない」と。ということで、せめてIssueを立てて管理しつつ、ついでにgit-flowも勉強してみよう!と思った次第です。
(注意:自分自身も初学習者です。何かあればコメントお願いします!)

追記

これ、ローカルで切って完成形のdevelopをプッシュするのもあるんですね。自分はどちらかがわからないのでわかる方は教えてください。

下準備

リポジトリを用意しましょう。(クローンしてきてそのまま利用する場合は、飛ばして大丈夫です)
リポジトリ作成時にあるやつが乗ってるだけです。可能ならgithubの方を参考にしてやってみてください。

$ echo "# リポジトリ名" >> README.md
$ git init
(既に初期ファイルを用意している場合)
$ git add *
(これからファイルを用意する場合)
$ git add README.md
# 以降は共通
$ git commit -m "initial commit"
$ git remote add origin リポジトリのURL
$ git push -u origin master

これでリポジトリの準備は完了です。それではgit-flowを試していきましょう。

git-flow

インストールしておかないと使えないので、まずはインストールしていきましょう。Macならbrewでインストールすることができます。

# インストールされているかの確認
$ brew list | grep git-flow
# インストール方法
$ brew install git-flow

git-flowの初期化

リポジトリを用意した時に、初期化しましたね。同様にgit-flowも初期化してあげましょう。

$ git flow init 

Enter連打で大丈夫です。作成されたブランチを確認してみましょう。

$ git branch -a
* develop
  master
  remotes/origin/master

developが追加されていますね。また*がついていることにより、developブランチにいることがわかります。remotesをみてください。これからわかることは、現在masterブランチしかリモートには登録されていません。pushして登録してあげましょう。

$ git push origin develop

最後に登録されているかの確認です。

$ git branch -a
* develop
  master
  remotes/origin/develop
  remotes/origin/master

Issueを立てよう

さあ、ここまできたらfeature/でどんどん開発していこうとこれまでの自分はなっていました。おかげで振り返ることはできないけど、大量にコミットされた訳の分からないリポジトリができるという悲劇を起こしました。はい、Issueを立てましょう。

先ほど立てたリポジトリへいき、IssueからNew issueをクリックして作成ページへ飛びましょう。

まず、こちらを確認してみたください。
開発者のタスク管理をGitHubで行ったらうまくいった話

自分は以下のようにしました。

1つ目
Title欄
CRUDの作成

# 概要
CURD機能を作成する

## タスク
- [ ] データベースのテーブルの作成
- [ ] データを扱うモデルの作成
- [ ] リクエストを扱うコントローラーの作成
- [ ] 表示するビューの作成

2つめ
Title欄
データベースのテーブルの作成

## 概要
データベースのテーブルを作成する

## 親課題
#1 CRUDの作成

## タスク
- [ ] migration してテーブルの素を用意
  - [ ] users テーブルのmigration
  - [ ] articles テーブルのmigration
  - [ ] tags テーブルのmigration
  - [ ] article_tag テーブルのmigration
- [ ] migrate してテーブルを作成

それではIssueを立てることができたので、実際に作業していきましょう。

ブランチを切る

ブランチを切る前に

それでは、作業をしていくブランチを作成しましょう。今回はgit-flowなのでコマンドが少し変わってきます。

$ git flow feature start <ブランチ名>

自分はこんな風にしました。

$ git flow feature start db_migrations_#2

確認

$ git branch -a
  develop
* feature/db_migrations_#1
  master
  remotes/origin/develop
  remotes/origin/master

リモートには反映されていないのでpushしましょう。

$ git flow feature publish #2_db_migrations

一応。リポジトリの最新の状態をpullする方法。

$ git flow feature pull origin db_migrations_#2

作業開始

ブランチを用意したので、やっと開発ができますね。特に変わったことはありません。

# ファイルやフォルダが増えた
$ git add *
$ git add ファイル名

# コミット
$ git commit -m "コメント"

pushのやり方は2種類あります。

# git flow を用いる場合
$ git flow feature publish db_migrations_#1

# どちらかでpush
$ git push origin feature/db_migrations_#1
$ git push origin HEAD

コミットメッセージはここを参考にしています。
Gitのコミットメッセージの書き方

プルリクエスト

せっかくIssueも立てて、管理できるようにしたんですから関連づけたいですよね。プルリク画面の右側の下から2番目にLinked issueというものがあります。そこから選択しましょう。

また、Merge pull requestのコメント欄内に、close #2を付け足しておきましょう。マージされるときに、自動でIssueが閉じられます。

最後に、マージした後のブランチは削除してしまいましょう。

ローカルでやること

最初の方にgit flow startしたので、終えないといけません。以下のようになります。

$ git flow feature finish db_migrations_#2

あと、残っているリモートブランチの削除もしてしまいましょう。

# 確認
$ git remote show origin
# 削除
$ git remote prune origin

リモートの最新の状態を取得しておきましょう。developのブランチから取得します。

$ git fetch origin develop
$ git merge origin/develop
# 2つを1度に行う場合
$ git pull origin develop

リリースについては、参考の方を確認お願いします。

感想

featureと接頭辞をつけてブランチを作成するのはとても面倒くさかった。あとローカルのブランチの削除も。そこが解決されたのが個人的にとても嬉しい。今度は、projectなんて機能も使ってみたい。
新入社員におくるGitHubでのプロジェクト管理の初歩

あと、すでに作成されているブランチを取得したい場合などはここが参考になります。

図とコマンドで分かる! git-flowによる開発の流れと使い方 (1/2)

参考

公式チートシート
git-flow cheatsheet
参考
git-flowを試す
コマンドラインでGit Flowをインストールして使ってみる
Git-flowって何?
git-flowで用いるブランチまとめ
GitHubでPullRequestを使った開発フロー
GitHubのissueとcommitを紐付ける
git-flowを用いた開発フロー

1
2
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
1
2