はじめに
Github等のバージョン管理を利用して開発を行う際に、コードを修正して、プルリクを投げて・・・みたいな一連の流れがあると思いますが、一般的な流れと、それに用いるコマンド等を備忘録的にあげておきます。
開発の流れ
僕が関わってきた開発だと以下のような流れが多かったです。もちろん、現場やプロダクトのやり方によって色々あるので、一つの例として見ていただければと思います。
- issueの作成
- issueへのアサイン
- ブランチの作成
- ブランチのpush
- プリルクの作成
issueの作成
プロダクトオーナーなどが、新しい機能やバグ等々についてissueを作成します。
issueへのアサイン
プロダクトオーナーなどが、実装を担当するエンジニアをアサインします。
ブランチの作成
エンジニアが自分の開発ブランチを作成します。例えば、developブランチから作成する場合
git checkout develop
git pull origin develop
git branch feature/image-crawler
git checkout feature/image-crawler
修正のコミット
大きな修正であれば毎日、キリのいい部分まで開発が終わったら都度など、よきタイミングでコミットを行います。
git add xxxxxx.js
git commit -m "crawlerベース処理の作成"
コミットをまとめる
実装が完了したら、今までのコミットをまとめます。たくさんのコミットがあるとレビュワーが見辛くなる可能性があるからです。
まずは、git log
してまとめるコミットを確認します。
git log
commit 07a7c37f5b961275241d5e172f5e54af5a67155a
Author: xxxxxxxxxxxxxxx <xxxxxxxxxxxxxxx>
Date: Wed Nov 27 20:54:52 2019 +0900
〇〇機能の修正
commit 6435a8ac27c90b7689483b625388adf952b60276
Author: xxxxxxxxxxxxxxx <xxxxxxxxxxxxxxx>
Date: Wed Nov 27 17:39:50 2019 +0900
〇〇機能の修正
commit 8b75ffa1b1a458d73168bbeb664139042f799102
Author: xxxxxxxxxxxxxxx <xxxxxxxxxxxxxxx>
Date: Tue Nov 26 18:38:39 2019 +0900
〇〇機能のバグフィックス
commit c204d9006a14b58e44a119ddeadd7a97704405c1 (HEAD -> develop, origin/develop, origin/HEAD)
Author: xxxxxxxxxxxxxxx <xxxxxxxxxxxxxxx>
Date: Tue Nov 26 17:34:23 2019 +0900
〇〇機能の修正
この場合は、c204d9006a14b58e44a119ddeadd7a97704405c1
以降のコミットをまとめたいので、以下のような感じでまとめます。
git rebase -i c204d9006a14b58e44a119ddeadd7a97704405c1
rebaseすると、以下のような感じでコミットをどうするか表示されます。
pick a1095a7 リファクタ
pick c5f8c89 テスト追加
pick 8b75ffa リファクタ
pick 6435a8a 取得画像の処理実装
pick 07a7c37 crawlerベース処理の作成
・・・
なので、だいたい、一番上のコミット以外をs
に変更してまとめます。
pick a1095a7 リファクタ
s c5f8c89 テスト追加
s 8b75ffa リファクタ
s 6435a8a 取得画像の処理実装
s 07a7c37 crawlerベース処理の作成
・・・
で、保存する。
次にコミットメッセージを編集する画面になるので、そこでコミットメッセージをまとめます。
これで準備完了です。
大元のブランチに更新があった場合
develop
からブランチを切って開発をしていると、自分が開発しているうちに、develop
が更新されているなんてことはよくあると思います。
その場合は、大元のブランチをrebase
すると最新のコミットを反映させることができます。
git checkout feature/image-crawler
git rebase develop
もちろん、コンフリクトがでること必須なので、そこは修正してマージしましょう。
ブランチのpush
origin上にブランチをpushします。
git push origin feature/image-crawler
プルリクの作成
最後にGithubの画面からプルリクを作成します。
この時に 関連issue #123
のように#+issue_id
を記述してあげると、プルリクとissueの関連がわかるので、レビュワーも見やすくなり、おすすめです。
以上で1つの開発が完了する感じです。
最後に
今回紹介したのはあくまでの一つの例なので、実際にはコミットのルールやメッセージの書き方など、プロジェクトで決まっていることが多いです。後は、もっとお作法がいいgitのコマンドとかを利用した方がいいこともあるので、それに関しても時と場合によって合わせるのがいいです。