はじめに
最近、やっとこさ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を用いた開発フロー