GitLabを使ってソースのバグ修正や機能追加するときに実施する作業の流れを紹介します
GitのクライアントはTortoiseGitを使っているので、本手順では開発の一連の流れをGitLabとTortoiseGitの操作で実施します

- 大まかな流れ
- 【GitLab】イシュー作成
- 【Tortoise】ローカルリポジトリ上でmainブランチを基点として新しいブランチを切る
- 【Tortoise】作成したブランチに切り替え
- 【Tortoise】作成したブランチを編集
- 【Tortoise】作成したブランチをコミット
- 【Tortoise】作成したブランチをリモートブランチへプッシュ(この時リモートブランチが作成される)
- 【GitLab】作成したブランチ⇒mainブランチへマージリクエストを作成
- 【GitLab】リクエスト後、マージ実施(ソースブランチは削除)
- 【Tortoise】リモートリポジトリからローカルリポジトリのmainブランチに更新をプルする
- 【Tortoise】作業用に作成したローカルのブランチを削除
大まかな流れ
開発は、mainブランチから開発用ブランチを切って、開発用ブランチを編集します
本手順作成にあたって下記のサイトを参考にしました


GitLabでの作業は【GitLab】、TortoiseGitでの作業は【Tortoise】と先頭に記載します
- 【GitLab】イシュー作成
- 【Tortoise】ローカルリポジトリ上でmainブランチを基点として新しいブランチを切る
- 【Tortoise】作成したブランチに切り替え
- 【Tortoise】作成したブランチを編集
- 【Tortoise】作成したブランチをコミット
- 【Tortoise】作成したブランチをリモートブランチへプッシュ(この時リモートブランチが作成される)
- 【GitLab】作成したブランチ⇒mainブランチへマージリクエストを作成
- 【GitLab】リクエスト後、マージ実施(ソースブランチは削除)
- 【GitLab】↑で競合が発生した場合は解決して再度マージ
- 【Tortoise】リモートリポジトリからローカルリポジトリのmainブランチに更新をプルする
- 【Tortoise】作業用に作成したローカルのブランチを削除
【GitLab】イシュー作成
イシューを作成し、何をするのかを明確化します
例えば、新機能追加、〇〇バグ修正というような形でイシューを作成して開発メンバー全員が何をするのか見てわかるようにします
GitLabにアクセスしてイシューを作成します

タイトルや説明を追加して「作成イシュー」をクリックします
※ タイトルや説明の内容、その他の設定についてはプロジェクトのルールに従ってください

【Tortoise】ローカルリポジトリ上でmainブランチを基点として新しいブランチを切る
ローカルリポジトリのmainブランチを開きます
作業ブランチ作成前にmainブランチを最新にしておきたいので、フォルダ内空白で右クリックし[TortoiseGit]-[プル]をクリックします

そのまま「OK」をクリックします

フォルダ内空白で右クリックし、[TortoiseGit]-[ブランチを作成]をクリックします

ブランチ名を入力し、基点が「HEAD(main)」となっていることを確認して「OK」をクリックします
※ この後ブランチを切り替えたいので、「新しいブランチに切り替える」にチェックを入れておきます

【Tortoise】作成したブランチに切り替え
新しいブランチを作成した時点で切り替わるようにオプションを付けてますので、すでに切り替わっています
ですので、こちらの手順はスキップします
【Tortoise】作成したブランチを編集
作業ブランチ内で変更を加えたいファイルを編集します
【Tortoise】作成したブランチをコミット
変更が終わったらコミットをします
フォルダ内空白で右クリックし、「Gitコミット」をクリックします

編集内容をメッセージに入力し、「コミット」をクリックします

【Tortoise】作成したブランチをリモートブランチへプッシュ(この時リモートブランチが作成される)
フォルダ内空白で右クリックし、[TortoiseGit]-[プッシュ]をクリックします

そのまま「OK」をクリックします

developブランチはリモートリポジトリにはまだ存在していなかったので、プッシュすると勝手に作成されます

【GitLab】作成したブランチ⇒mainブランチへマージリクエストを作成
リモートリポジトリのdevelopブランチを、mainブランチへのマージをリクエストします
(要するに開発環境から本番環境へ適用する段階です)
マージリクエスト⇒レビュー⇒マージ(問題なければ)という流れです
基本は開発者がマージリクエストをおこなってそれに対してレビュアーがレビューのち「承認」をします
承認されたらマージ権限ある人がマージを実施します
GitLabの[プロジェクト]-[マージリクエスト]を開きます
ちょうど先ほどプッシュしたdevelopについて「マージリクエストを作成」が表示されているのでそれをクリックします

タイトルと説明を入力し、「作成マージリクエスト」をクリックします
ソースブランチ(develop)は今回の作業でしか使いませんので、「マージリクエストが承認されたときにソースブランチを削除します。」にチェックを入れます
※ タイトルや説明の内容、その他の設定についてはプロジェクトのルールに従ってください

余談ですが、マージリクエストの説明部分の内容はテンプレを用意することもできるそうです
https://zenn.dev/secondselection/articles/gitlab_operation#issue%E3%82%84mr(%E3%83%9E%E3%83%BC%E3%82%B8%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88)%E3%81%AE%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88
【GitLab】リクエスト後、マージ実施(ソースブランチは削除)
「マージ」をクリックします

競合が発生した場合
下記の通りエラーが表示されます
「競合を解決」をクリックして解決を試みます

ソースとターゲットどちらの変更を保持するか選択、もしくはインライン修正を実施し、「ソースブランチへのコミット」をクリックします

マージできる状態になったので、「マージ」をクリックします

【Tortoise】リモートリポジトリからローカルリポジトリのmainブランチに更新をプルする
ローカルリポジトリのmainを最新にします
mainブランチを最新にしておきたいので、フォルダ内空白で右クリックし[TortoiseGit]-[プル]をクリックします

【Tortoise】作業用に作成したローカルのブランチを削除
ローカルリポジトリのブランチ(開くブランチは何でもよい)を開きます
フォルダ内空白で右クリックし[TortoiseGit]-[refブラウザ]をクリックします

[refs]-[heads]を左ペイン~選択し作成した作業用ブランチ(develop)を右クリックし、「ブランチを削除」をクリックする

警告が表示されるので、消すブランチが合っていることを確認して「はい」をクリックする

コメント