LoginSignup
8
5

More than 3 years have passed since last update.

Githubでプルリク出すまでの流れ

Posted at

はじめに

Github等のバージョン管理を利用して開発を行う際に、コードを修正して、プルリクを投げて・・・みたいな一連の流れがあると思いますが、一般的な流れと、それに用いるコマンド等を備忘録的にあげておきます。

開発の流れ

僕が関わってきた開発だと以下のような流れが多かったです。もちろん、現場やプロダクトのやり方によって色々あるので、一つの例として見ていただければと思います。

  • issueの作成
  • issueへのアサイン
  • ブランチの作成
  • ブランチのpush
  • プリルクの作成

issueの作成

プロダクトオーナーなどが、新しい機能やバグ等々についてissueを作成します。

スクリーンショット 2019-11-28 16.14.47.png

issueへのアサイン

プロダクトオーナーなどが、実装を担当するエンジニアをアサインします。

スクリーンショット 2019-11-28 16.14.56.png

ブランチの作成

エンジニアが自分の開発ブランチを作成します。例えば、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の画面からプルリクを作成します。

スクリーンショット 2019-11-30 15.33.13.png

この時に 関連issue #123 のように#+issue_idを記述してあげると、プルリクとissueの関連がわかるので、レビュワーも見やすくなり、おすすめです。

以上で1つの開発が完了する感じです。

最後に

今回紹介したのはあくまでの一つの例なので、実際にはコミットのルールやメッセージの書き方など、プロジェクトで決まっていることが多いです。後は、もっとお作法がいいgitのコマンドとかを利用した方がいいこともあるので、それに関しても時と場合によって合わせるのがいいです。

8
5
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
8
5