はじめに
エンジニアとして採用してもらって1ヶ月…やっとそれっぽい仕事をさせてもらえるようになりました。
Git-flowを用いて開発を進めているということなので、個人の備忘録もかねてよく使うコマンドや開発の流れをおぼえがきとしてまとめます。
できることが増えてきたら随時追加していきたい。
(というのを書いて1ヶ月くらい下書きで寝かせてありました…)
Git-flowを用いた開発
今は機能の追加や改修をメインで作業しているので、5種類あるブランチのうち、主に使うのはdevelopとfeatureブランチとなります。
- master
- 本番で稼働しているアプリケーションのコード
- releaseブランチからしかマージされない
- develop
- 開発環境
- ここからfeatureブランチを切って作業する
- release
- リリースのための準備ブランチ
- feature
- 機能追加や修正ごとにdevelopブランチから切って作業する
- 作業完了・レビューOKならdevelopブランチへマージされる
- hotfix
- 緊急対応・バグ修正用
- masterブランチから切って作業する
開発の流れ
導入
導入については駆け足だったのでほとんど覚えてないのです(すみません)
- Git-flowを入れて
$ brew install git-flow
- リポジトリをクローン
$ git clone git@github.com:xxx/xxxxxxxx.git
は、やりました。
開発作業開始
自社システムの機能の追加や改修をメインでやっています。
渡されたタスクごとにfeatureブランチをdevelopブランチから切って進めていきます。
developブランチからfeatureブランチを作成
現在のブランチ確認
$ git branch
*が付いているのが現在のブランチ
$ git branch -a
とするとリモートのブランチも確認できます。
ブランチの切り替え
$ git checkout <ブランチ名>
違うブランチにいたらdevelopへ移動します。
リモートから最新のデータをPull
$ git pull origin develop
ローカルよりリモートが進んでいて新しいブランチが作れなかった時がありました。
(上記コマンド実行で解決)
Branches 'develop' and 'origin/develop' have diverged.
And branch 'develop' may be fast-forwarded.
featureブランチの作成
$ git flow feature start <ブランチ名>
現環境ではタスクごとに番号が振られているのでその番号をブランチ名として作成します。
ブランチを作成したら早速開発に取り掛かります!(たのしい)
ファイルの追加とコミット
開発が一区切りしたらこまめにコミットします。
コミットの粒度に気をつけて…ってそんなに大きな単位の作業はしていませんが、メッセージが一行で簡潔に書けるくらいを意識しています。
$ git add .
$ git commit -m "コミットメッセージ"
ステータスの確認
ファイルの変更状況やコミット状況など確認できます。
$ git status
コミットメッセージの修正
一旦コミットした後にメッセージを修正したいことがありました。。
(そしてvimで開いて焦る)
$ git commit --amend
#もしくは
$ git commit --amend -m "変更したいコミットメッセージ"
vimで修正する場合
- h:左に移動
- j:下に移動
- k:上に移動
- l:右に移動
- x:削除
- ZZ:上書きしてエディタ終了
リモートへpush
開発が終わったらリモートへpushします。
$ git push -u origin feature/<ブランチ名>
-u
はつけてもつけなくてもいいですが、つけておくと修正が入って再度pushするときに
$ git push
だけで同じブランチにpushすることができるそう。
参考:git push -u オプションで”上流ブランチ”を設定 | WWWクリエイターズ
プルリクエスト作成
何をやったか、必要ならMarkdownを使いながら相手にわかりやすいよう書きます。
レビューを経てマージ
プルリクエストを作成したらレビューをしてもらい、修正があれば修正してファイルの追加とコミットから再度行います。
LGTMを頂いたらマージします(developへマージされる)。
おわりに
勉強でオリジナルアプリを開発していた時はGitHub DesktopというGUIツールを使っていたのですが、今は色々覚えるべくコマンドでGitを使うことを心がけていますがなかなか難しいですね。
下書きの時点での現場は上司が不在(いるけどいない)、同僚もいないので一人寂しくあれこれ調べながら奮闘しておりましたが、この度チーム開発できる現場に行けそうなのでまた心機一転頑張りたい!と思って下書きのまま眠っていたこの記事を投稿してみました。