GithubやGitlab等を使って開発を行うときにローカル側での操作で、最低限必要になるGitコマンドとその操作順をフロー図を加えて説明します。
はじめに
一般的にGithubやGitlab等をリポジトリとして利用する場合、開発フローとしては「git-flow」か「Github Flow」を採用することが多いです。これらのフローの詳細についてはここでは省略するので、以下のリンクなどを参照してください。
基本的にはどちらもmain or developブランチから開発する機能やissueごとにフィーチャーブランチを切って開発を進め、リモートリポジトリにプッシュしてプルリクエストを作成し、レビューを受けてマージするという流れになります。
今回は、これらのフローを実践する場合に最低限ローカルで必要になるGitコマンドを解説します。
ローカルでの操作と使用するGitコマンド
開発はリモートのリポジトリをクローンしてローカルに持ってくるところからはじまります。その後フィーチャーブランチを切って開発し、コードをリモートリポジトリにプッシュするところで終わります。そして次の機能開発に移るというサイクルの繰り返しです。以下はこのサイクルの中で実行されるGitコマンドとその操作フローです。
① git clone <リポジトリ>
開発をはじめたら、リモートリポジトリをローカルに持ってくるためにclone操作を実行します。これは最初に1回だけ行い、次の開発に移るときも同じリポジトリを使う場合は行いません。リポジトリのURLはリモートリポジトリのページから取得できます。
$ git clone <リポジトリ>
② git pull origin main
フィーチャーブランチでの開発を始める前にmainブランチ(or master or developブランチ)に最新のリモートリポジトリの状態をローカルに反映させるためにpull操作を行います。リポジトリをcloneした後、他の人がリモートリポジトリに変更を加えた場合に必要になります。チームの開発フローによっては、mainブランチではなくmasterやdevelopブランチを指定することもあります。
$ git pull origin main
③ git checkout -b <フィーチャーブランチ名>
担当している機能やissueごとにフィーチャーブランチを切ります。このブランチで開発を進めます。ブランチ名は機能名やissue番号を含めるとわかりやすいです。
$ git checkout -b <フィーチャーブランチ名>
④ 開発作業/コード修正
担当している機能やissueに対応するコードを開発します。この作業はエディタやIDEを使って行います。
⑤ git status / git status -uall
開発中のファイルの状態を確認するためにstatus操作を行います。これは予期せぬ変更を加えていないかの確認のために実行していて、このコマンド実行でファイルやローカル・リモートリポジトリに何らかの変更が実行されることはありません。-uallオプションをつけると、詳細に表示されます。
$ git status
$ git status -uall
⑥ git add <変更したファイル>
④で開発したコードをステージングエリアに追加します。変更したファイルを指定してadd操作を行います。
$ git add <変更したファイル>
⑦ git commit -m "コミットメッセージ"
ステージングエリアに追加したコードをローカルリポジトリにコミットします。コミットメッセージの書き方は開発チームのルールがあることが多いです。
$ git commit -m "コミットメッセージ"
⑧ mainの変更を取り込む
ローカルでの開発中にリモートのmainブランチに変更が取り込まれた場合、現在作業中のローカルフィーチャーブランチにその変更を取り込む必要があります。この場合⑨の操作を実行します。
⑨ git pull origin main
②と同様にリモートの変更を取り込みます。ただし②はmainブランチに対し取り込みましたが、今回はフィーチャーブランチに取り込んでいる点で異なります。この時、フィーチャーブランチで行った変更がリモートの変更と競合した場合conflictが発生することがあります。conflictの解消手順はここでは省略します。
$ git pull origin main
⑩ git push origin <フィーチャーブランチ名>
ここまでの変更をリモートリポジトリに保存するためpush操作を実行します。リモートにフィーチャーブランチが存在しない場合はこのタイミングで作成されます。ローカル環境の故障等による開発物の消失のリスク回避のためにもこまめにpush操作を実施することを推奨します。
$ git push origin <フィーチャーブランチ名>
⑪ 開発終了
担当している機能やissueの開発が終了していない場合は④に戻って引き続き開発を実施します。終了している場合は使用しているGitLab/GitHub等のリポジトリマネージャー上でのマージリクエスト等の操作になり、ローカルでのgit操作は終了です。
リモートリポジトリ上でのマージ操作についてはこちらを参照ください。
⑫ 次の開発の開始
新しい機能やissueの開発に移っていきます。引き続き同じローカルリポジトリを使用します。
⑬ git checkout main
新しくフィーチャーブランチを作成する前に一度mainブランチに戻ります。この後は②に移りgit pull origin main
で最新の状態に同期後に開発を再開していきます。
$ git checkout main
まとめ
Gitを使用した開発を行う際に最低限必要なローカルでの操作フローとそのGitコマンドを解説しました。実際に使い始めると様々なトラブルシューティングの必要性が出てくるかと思いますが、まずはこれらの操作を習得することで、リモートリポジトリとの同期を取りながら開発を進めることができます。