Gitコマンドを使った業務フローを大公開!

こんにちは! あだ名が こわっしー に変わってしまいそうでヒヤヒヤしている ひさっしー です…!
入社から早3ヶ月、黒い画面と一緒にとても濃い日々を送っています!

さて…みなさん、Gitライフ楽しんでますか~??

まだまだ私も勉強中の身ですが、今回はグランフェアズの業務フローに沿って、
実際に私がどのようなGitコマンドを使っているのかをご紹介しちゃいます!

今回はこの2点をまとめてみました。

  • Gitコマンドを使った業務フロー
  • 個人的によく使うGitコマンドまとめ

出てくるのはよく使うコマンドばかりですので、 Git勉強中のみなさまのお役にたてると幸いです。
では、早速ご紹介していきます!

Gitコマンドを使った業務フロー

グランフェアズでのマークアップ業務は、コーディング担当とコードレビュー担当の2名でチームを組んで行います。 レビュー担当を作ることで、さらに作業の精度を高めています!

役割分担 ※業務によって担当を交代します。

【A】コーディング担当(私):実際にマークアップ作業をする人
【B】コードレビュー担当:コーディング担当のコードをチェックする人

私は【A】コーディング担当として業務にあたることが多いので、担当した業務フローをご紹介しますね!

コーディング担当の業務フロー
  1. ローカルリポジトリに取り込んで作業開始
  2. 作業して【B】にプルリクエストを送る
  3. 作業内容をマージする(テストアップに反映する)

ざっくりとですが、作業する→レビューしてもらう→作業をマージするという流れですね。
それでは、実際にフローに沿ってGitコマンドを見ていきましょう!

1. ローカルリポジトリに取り込んで作業開始

では、コーディングに入る前の準備をしましょう!
(1)リモートリポジトリの取り込み

# 作業ディレクトリを作る場所へ移動
$ cd <作業ディレクトリを作る場所>
# リモートリポジトリの取り込み
$ git clone git@bitbucket.org:<ユーザ名>/<リポジトリ名>.git
# 例えばこのような感じ
$ git clone git@bitbucket.org:granfairs/testrepo.git

まずはリモートリポジトリの master をローカルリポジトリに cloneします!
初めて無事にcloneできたとき、コマンドひとつでローカルに落とせるなんて…と感動しました(笑)

(2)作業ブランチを作成

# 作業ブランチを作成 (して切り替え)
$ git checkout -b dev/newBranch

次に、作業ブランチを作成しましょう!(今回は仮に dev/newBranch という作業ブランチ名にします)

-bというオプションをつけることで、ブランチの作成と作成したブランチへの切り替えを同時に行うことができます。便利!とてもよく使うコマンドです。

(3)ローカルのmasterブランチを削除

# ローカルのmasterブランチを削除
$ git branch -d master

そして、この操作は特殊かと思いますが、ローカルのmasterブランチを削除します。
グランフェアズでは、作業時に誤ってリモートのmasterブランチにpushしてしまわないように、あらかじめローカルのmasterブランチを削除しています。 (作業ブランチをpushする時の安心感が違いますよ…!)

リモートのmasterブランチにpushできないようにする方法については
リモートのmasterブランチへのpushを禁止するを読んでみてくださいね。

(3)作業を記録

$ git add <オプション>
$ git commit -m "<コミットメッセージ>"

そして作業をステージングエリアに追加し、コミットします。

git addのオプションは -A をよく使います。git管理内の変更、新規追加、削除したファイルすべてをaddすることができて便利です!

(4)リモートにpush

$ git push -u origin dev/newBranch

次に作成したローカルブランチの内容をリモートにpushして、ブランチを共有できるようにしましょう!これで初めてリモートリポジトリにもブランチが作成されます。

-u は「追跡オプション」といって、これをつけてあげると、対象のブランチをリモートリポジトリに追跡させることができるので、次回からはgit pushだけでOK!

「ここまで読んだけれど、ローカルとリモート?ステージングって?」というGit超初心者さんは、まずはこちらを読んでみることをおすすめします!

2. 作業して【B】にプルリクエストを送る

ここからは、初回以降のコーディング作業のフローです。
日々のコーディングは、作業ブランチへの記録 リモートへのpushを繰り返して進めていきます。

(1)作業ブランチに切り替え

$ git checkout dev/newBranch

まずは作業するブランチに切り替えましょう。

(2)最新を取り込む

$ git fetch origin
$ git merge origin/master

次に、リモートのmasterブランチが更新されている可能性が高いので、作業再開時に必ずリモートリポジトリから最新の取り込みを行います。

あれ?git pullじゃないの?という方もいらっしゃるかもしれませんが、git pull は現在チェックアウトしているブランチに merge するので、チェックアウトをし忘れて関係ない作業ブランチに pull してしまう可能性があるのです…!そのため社内ではpullを使わずにfetch+mergeを使用するというルールで統一しています。

(3)作業を記録

$ git add <オプション>
$ git commit -m "<コミットメッセージ>"

作業をある程度進めたら、なるべくこまめに作業を記録しておきましょう!
これらは、Gitを使って作業していると一番使うコマンドではないでしょうか。慣れてくると、身体が勝手に打ち始めますね…(笑)

(4)リモートにpush

$ git push

キリの良いところでコミットした作業をリモートにpushしておきましょう。 新規ブランチ作成の際に追跡オプションをつけているので、git pushだけ。楽ちんですね!

(5)プルリクエストを送る
さて、コーディングが完了したら、コードレビューしてもらうために【B】へプルリクエストを送ります。

プルリクエストというのは「この作業、masterにマージして問題ないか、レビューしてくださいー!」というコードレビューのリクエストを他の方に通知することで、グランフェアズではBitbucketを使用して行っています。

【 コードレビューがNGだった場合 】
OKが出るまで、修正してリモートリポジトリにpush、【B】にコードレビューしてもらうという過程を繰り返します。
レビューする人の負担を少しでも減らすために、コーディング担当者はレビューを受ける前にしっかりコードチェックをせねば、ですよ…!(戒め)

【 コードレビューがOKだった場合 】
頑張りましたね!
ほっと胸をなでおろしながら、次の「3. 作業内容をマージする(テストアップに反映する)」に進みましょう!

3. 作業内容をマージする(テストアップに反映する)

コードレビューでOKがもらえたら、作業内容をマージしてテストアップに反映しましょう!

(1)Bitbucketでmasterブランチへのmergeを実行する。

Bitbucketのプルリクエスト上でコードレビュー担当の人が「承認」ボタンを押してくれていると思いますので、その横の 「マージ」ボタンをクリックすると自動的にmasterへのmergeが実行されます。
Bitbucketのプルリクエストの承認ボタン
リモートに作業ブランチ(dev/newBranch)がある場合はBitbucket上でマージと合わせて削除しておきます。

(2)テストアップ内容を確認。

グランフェアズでは自動デプロイの設定がされているので、masterへのmergeが実施されると、自動でテストサーバに差分が反映されます。変更をすぐに他の方が確認できるので、とてもスムーズですよね!

というわけで、早速テストアップを確認して、自分の作業がちゃんと反映されているか確認します。

グランフェアズで行っている自動デプロイの仕組みや設定方法が気になる方はぜひこちらを読んでみてください!

(3)PJ管理ツールにて完了を報告
「終わったよ~」って報告しましょう。

業務完了!

自分が作業した内容が無事にテストアップに反映されているのを見ると、ホッとしますね…!

以上がグランフェアズで実際に行っているGitを使った業務フローです。
みなさんのところではどのようにGitを活用しているのでしょうか?
もし「こういうやり方もおすすめだよ!」という方がいらっしゃいましたらぜひぜひ教えてくださいね!


個人的によく使うGitコマンドまとめ

個人的によく使うなー、というGitコマンドを状況ごとにまとめてみました。備忘録として使っていただけると嬉しいです!

作業ツリー・ブランチの管理

変更が加えられたファイルを表示
現在の作業状況が確認できます。 あのファイル修正したっけ?といったときにささっと確認!

$ git status

コミットの一覧(コミットログ)を表示
修正したファイルなどの履歴を確認したいときに

$ git log
git logのオプションを知りたい方はこちら:git log よく使うオプションまとめ


ファイルのリネーム・削除

ファイルのリネーム

# ファイル名を変更(例: test.htmlをindex.htmlに変更)
$ git mv test.html index.html

ファイルの削除
不要になったファイルを削除するのにたまに使います。

# ファイルを指定して削除
$ git rm <ファイル名・フォルダ名>


ブランチの作成・削除

新規にローカルブランチを作成(して、チェックアウトする)
先ほども業務フローの中で出てきましたね。新規ブランチを作成する時はいつもこれです。

$ git checkout -b <ブランチ名>

ブランチの名前を変更する
あー、ブランチ名間違えちゃったな…というときにはこちら

# ブランチの名前を変更
$ git branch -m <古いブランチ名> <新しいブランチ名>
# checkoutしているブランチの名前を変更
$ git branch -m <新しいブランチ名>

ローカルブランチを削除
作業ごとブランチを削除したいときに

# ブランチを削除(HEAD にブランチをマージ済の場合)
$ git branch -d <ブランチ名>
# ブランチを削除(マージ済かを問わずに強制削除)
$ git branch -D <ブランチ名>

リモートブランチを削除

# ブランチを削除
$ git push --delete origin <ブランチ名>
# ブランチを削除(こちらでもOK)
$ git push origin :<ブランチ名>


いかがでしたか?
今回はグランフェアズでのGitコマンドを使った業務フローと、個人的によく使うGitコマンドまとめをご紹介しました。

Gitコマンドは無数にあるので、まだまだ使ったことのないものが多いです…。
よく使うコマンドでもオプションが色々あるので、場面によって使い分けできるとさらに便利になります!(正直まだまだ使いこなせていませんが…)

Gitに慣れるためにどんどんコマンドを試していきたいな、と思っているひさっしーでした!