はじめに
はじめまして、プログラミング初学者の@kat_logと申します。
プログラミングの勉強をする中で、
- 「実務ではmainブランチに直コミットはしない」
- 「GitHubのissue機能をタスク管理に使うと良い」
という情報を度々見かけ、自分なりに開発手順をまとめました。
※実務未経験者が書いております。
実務経験の先輩方、違和感がある部分等ありましたら、ぜひご教示いただければと思います!
前提
GitとGitHubの連携は済んでいるという前提で書いております。
(ローカルリポジトリとリモートリポジトリに「main」ブランチのみがある状態と仮定し記述しております。)
手順
developブランチの作成
mainブランチでは作業しないため、developブランチを切ります
git switch -c develop
新しいブランチの作成はgit checkout -b ブランチ名
でも可能です!
switch
の方が比較的新しく追加されたコマンドのようで、こちらで記載しました!
developブランチをリモートリポジトリに反映
git push -u origin develop
GitHubにてissue発行
作業前にリモートのdevelopブランチをローカルに反映
1人で1台で開発する場合不要そうですが、、ローカルのdevelopブランチをリモートに合わせておきます
(記事1周目の場合も、先程developブランチをローカルからリモートに反映したばかりなので不要ですね)
git switch develop #①developブランチへ移動
git fetch #②リモートのdevelopをローカルのリモート追跡ブランチorigin/developに持ってきてます
git merge origin/develop #③ローカルのdevelopに、ローカルのリモート追跡ブランチorigin/developを反映させます
featureブランチの作成
developブランチから、実際に作業をするfeatureブランチを切ります
git switch -c ブランチ名(例:feature/#1_add_〇〇)
ブランチ名のところに#数字という形でGitHubのissue番号を入れておくと、どのissueの作業を行うブランチなのか分かりやすくなります
featureブランチをリモートリポジトリに反映
git push -u origin 先程作ったブランチ名
〜 ファイル編集 〜
- 細かい粒度でコミットする
-
push
も定期的に行う
と良いみたいです!
編集後
git diff #編集内容の確認
git status #編集したファイルの確認
git add -A #編集したファイルをインデックス(ステージングエリア)に追加
git commit -m "#issue番号 コミットメッセージ" #コミットメッセージに「#issue番号」を含めましょう!
コミットメッセージの中に「#1」のように「#issue番号」を入れることでGitHubのissueと結びつけることができます!
push前にdevelopの最新状態を取得
git switch develop #developブランチへ移動
git fetch
git merge origin/develop
(こちらも1人で1台で開発する場合不要とは思います)
(競合があれば、(チーム開発の場合、修正したメンバと)確認しながら修正することになると思います)
リモートにpush
git switch featureブランチ
git push -u origin featureブランチ
GitHub上でプルリクエスト&マージ
(featureブランチをdevelopにマージするための)プルリクエストを作成
マージの実行
GitHub上で対象issueをclose
ローカルのdevelopをリモートと同じ状態にする
git switch develop
git fetch -p
git merge origin/develop
[git fetch -p
について補足]
-
git fetch
に-p
オプションを付けることで、(git fetchしつつ)リモートに存在しないブランチをローカルのリモート追跡ブランチから削除することができます。 -
GitHubでは、マージされたタイミングでマージ元のブランチが削除される設定がデフォルトのようです。
-
(今回の場合、リモートのfeatureブランチがマージによって無くなっているのでローカルのリモート追跡ブランチにあるorigin/featureブランチが
git fetch -p
により消えます)
ローカルのfeatureブランチを削除
ローカルのリモート追跡ブランチfeatureは削除できましたが、ローカルの作業ブランチfeatureが残っているので削除しておきます。
git branch -a #ブランチ一覧の表示
git branch -d featureブランチ
〜 一連の流れ完了 〜
これにて一連の作業が完了となります!🎉
次の作業に移るには、再び「GitHubにてissue発行」から行う形になります。
おわりに
お読みいただきありがとうございました。
自分と同じく初学者の参考になれば嬉しいです。
また、実務未経験者が調べながらたどり着いた流れになりますので、実務的にはこうした方が良い等アドバイスありましたら、ご教示いただければと思います。
↓に参考にさせていただいたページの一覧を付けております。
初学者の方々、一緒に頑張っていきましょう〜😄