0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初回コミットからマージリクエストまで

0
Posted at

初回コミットからマージリクエストまで

(トップページはこちら) - (コード管理を始める)

GitLabを使った開発ワークフローは、一度理解すれば非常に効率的です。この記事では、Gitの基本概念から実際のマージリクエスト作成まで、実務で必要な知識を体系的に解説します。

1. Gitの基本概念

Gitはバージョン管理システムです。ファイルの変更履歴を追跡し、複数人での開発を可能にします。

リポジトリは、ファイルを保存する場所です。GitLabでは、リポジトリはプロジェクト内に配置されます。開発時には、リポジトリを自分のコンピュータにクローンし、変更を加えた後、リポジトリにプッシュします。

コミットは、変更の記録単位です。各コミットには、誰が、いつ、何を変更したかが記録されます。

ブランチは、作業を分離するための仕組みです。デフォルトブランチ(通常はmain)から自分のブランチを作成し、変更を加えてから、デフォルトブランチにマージします。

2. GitLabの推奨ワークフロー

実務では、以下のフローで開発を進めます。

このフローにより、変更履歴の追跡、コードレビュー、品質管理が実現できます。

3. 環境準備

開始前に以下を確認してください。

  1. ローカルマシンにGitをインストール
  2. GitLabアカウントの作成(組織のインスタンスまたはGitLab.com)
  3. SSHキーの作成とGitLabへの登録(セキュアな通信のため)

4. プロジェクトとリポジトリの準備

4.1. サンプルプロジェクトの作成

  1. 左サイドバー上部の新規作成(+アイコン)から新しいプロジェクト/リポジトリを選択
  2. プロジェクト名マイサンプルプロジェクトを入力
  3. READMEでリポジトリを初期化にチェック
  4. プロジェクトを作成を選択

4.2. リポジトリのクローン

  1. プロジェクト概要ページの右上にあるコードボタンをクリック
  2. SSHでクローンのURLをコピー
  3. ターミナルで作業ディレクトリに移動し、以下を実行
git clone git@gitlab.com:tanaka-taro/my-sample-project.git
cd my-sample-project
  1. 現在のブランチを確認
git branch

アスタリスク(*)が付いているブランチが現在のブランチです。

5. 基本的な開発フロー: コマンドライン編

5.1. ブランチの作成

新しい機能や修正のために、専用のブランチを作成します。

git checkout -b feature-hello-world

5.2. ファイルの編集

テキストエディタでREADME.mdを開き、以下を追加します。

Hello world! Gitを使っています!

5.3. 変更の確認

git status

以下のような出力が表示されます。

On branch feature-hello-world
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   README.md

no changes added to commit (use "git add" and/or "git commit -a")

5.4. ステージングとコミット

変更をステージング領域に追加し、コミットします。

git add README.md
git commit -m "READMEファイルにHello worldメッセージを追加"

5.5. GitLabへプッシュ

git push origin feature-hello-world

これで、ブランチがGitLab上に作成され、他のメンバーにも見えるようになります。

6. マージリクエストの作成

変更をデフォルトブランチに統合するには、マージリクエストを作成します。これにより、コードレビューや議論が可能になります。

6.1. プッシュ後の自動提案から作成

ブランチをプッシュした直後、GitLabのプロジェクトページにマージリクエストを作成ボタンが表示されます。これが最も簡単な方法です。

  1. プロジェクトページを開く
  2. 表示されたバナーのマージリクエストを作成をクリック
  3. タイトルと説明を入力
  4. レビュアーやラベルを設定(任意)
  5. マージリクエストを作成を選択

6.2. マージリクエスト一覧から作成

  1. コード > マージリクエストを選択
  2. 右上の新しいマージリクエストをクリック
  3. ソースブランチ(feature-hello-world)とターゲットブランチ(main)を選択
  4. ブランチを比較して続行
  5. タイトルと説明を入力し、マージリクエストを作成

各ブランチは1つのオープンなマージリクエストにのみ関連付けられます。

6.3. マージリクエストのレビューとマージ

マージリクエストが作成されると、以下のフローで進みます。

  1. レビュアーが変更内容を確認
  2. 必要に応じてコメントや修正依頼
  3. 承認後、マージボタンをクリック
  4. ソースブランチの削除(任意)

7. イシュー駆動開発

実務では、イシューを起点とした開発が推奨されます。

7.1. イシューの作成

  1. プラン > イシューを選択
  2. 新しいイシューをクリック
  3. タイトルと説明を入力(例: 「ユーザー認証機能の追加」)
  4. 担当者、ラベル、マイルストーンを設定
  5. イシューを作成

7.2. イシューからブランチとマージリクエストを作成

イシューから直接ブランチを作成すると、作業が効率化されます。

  1. イシューページを開く
  2. イシュー説明の下部にあるマージリクエストを作成 > マージリクエストとブランチを作成
  3. 提案されたブランチ名を確認(イシュー番号とタイトルから自動生成)
  4. 必要に応じてブランチ名を変更
  5. マージリクエストを作成

これにより、以下が自動的に行われます。

  • ブランチ名にイシュー番号が含まれる(例: 123-add-user-authentication)
  • マージリクエストの説明に「Closes #123」が追加される
  • マージ後、イシューが自動的にクローズされる

7.3. ローカルでの作業

イシューからブランチを作成した後、ローカルで作業を進めます。

# リモートの変更を取得
git fetch origin

# イシューから作成されたブランチに切り替え
git checkout 123-add-user-authentication

# コードを変更
# ...

# コミット
git add .
git commit -m "ユーザー認証のログイン機能を実装"

# プッシュ
git push origin 123-add-user-authentication

マージリクエストは既に作成されているため、プッシュするだけで変更が反映されます。

8. その他のマージリクエスト作成方法

8.1. タスクから作成

GitLab 17.8以降では、イシュー内のタスクから直接マージリクエストを作成できます。

前提条件: プロジェクトに対して開発者ロール以上が必要

  1. プラン > イシューからタスクを検索
  2. タスク説明の下部にあるマージリクエストを作成
  3. ブランチ名を確認・必要に応じて変更
  4. マージリクエストを作成

8.2. Webエディタから作成

GitLabのWebエディタで直接ファイルを編集し、マージリクエストを作成できます。

  1. リポジトリ内のファイルを開く
  2. 編集ボタンをクリック
  3. ファイルを編集
  4. 下部の変更をコミットセクションで:
    • コミットメッセージを入力
    • 新しいブランチを作成してマージリクエストを開始を選択
    • ブランチ名を入力
  5. 変更をコミット

小規模な修正やドキュメント更新に便利です。

8.3. ブランチ作成時に作成

  1. コード > ブランチを選択
  2. ブランチ名を入力し、新しいブランチ
  3. ファイルリストの上にあるマージリクエストを作成
  4. フィールドを入力し、マージリクエストを作成

8.4. フォークから作成

オープンソースプロジェクトへの貢献など、フォークしたプロジェクトから元のプロジェクトにマージリクエストを送る場合の手順です。

手順:

  1. フォークでコード > マージリクエスト > 新しいマージリクエスト
  2. ソースブランチで、フォーク内の変更を含むブランチを選択
  3. ターゲットブランチで:
    • 上流リポジトリを選択(フォークではない)
    • 上流リポジトリのブランチを選択
  4. ブランチを比較して続行
  5. マージリクエストを作成

マージリクエストは、フォークではなく上流リポジトリに作成されます。

重要な注意点:

  • ターゲットプロジェクトの承認ルールが適用されます
  • CI/CD設定とリソースはフォークのものを使用します
  • 上流プロジェクトでパイプラインを実行するには、そのプロジェクトのメンバーである必要があります

デフォルトターゲットの設定:

頻繁に上流に貢献する場合、デフォルトターゲットを設定できます。

  1. 設定 > マージリクエストを選択
  2. ターゲットプロジェクトセクションで希望のオプションを選択
  3. 変更を保存

9. 高度な機能

9.1. コマンドラインツールの活用

GitLab CLIツール(glab)を使うと、コマンドラインから直接マージリクエストを作成できます。

# マージリクエストを作成
glab mr create --title "新機能の追加" --description "詳細な説明"

# マージリクエスト一覧を表示
glab mr list

# マージリクエストをマージ
glab mr merge 123

9.2. Gitプッシュオプション

プッシュ時にオプションを指定して、マージリクエストを作成できます。

# プッシュと同時にマージリクエストを作成
git push -o merge_request.create origin feature-branch

# タイトルと説明を指定
git push -o merge_request.create \
        -o merge_request.title="新機能の追加" \
        -o merge_request.description="詳細な説明" \
        origin feature-branch

# ターゲットブランチを指定
git push -o merge_request.create \
        -o merge_request.target=develop \
        origin feature-branch

9.3. メールでの作成

メールを送信してマージリクエストを作成することも可能です(GitLab.comでは有効)。

前提条件:

  • 開発者ロール以上が必要
  • 現在のリポジトリをターゲットにする(上流リポジトリは不可)

手順:

  1. コード > マージリクエストを選択
  2. このプロジェクトに新しいマージリクエストをメールで送信を選択
  3. 表示されたメールアドレスをコピー(このアドレスは非公開に保つ)
  4. メールを作成:
    • 宛先: コピーしたアドレス
    • 件名: ソースブランチ名
    • 本文: マージリクエストの説明
    • 添付: .patchファイル(任意、合計2MB以下)
  5. メールを送信

この方法は特殊なケースでのみ使用します。

10. トラブルシューティング

10.1. イシューにマージリクエスト作成ボタンが表示されない

以下の場合、マージリクエストを作成ボタンは表示されません。

  • 同じ名前のブランチが既に存在する
  • このブランチのマージリクエストが既に存在する
  • プロジェクトにアクティブなフォーク関係がある
  • プロジェクトがプライベートで、イシューが機密扱いである

対処法: 既存のブランチやマージリクエストを確認し、必要に応じて削除または名前を変更します。

10.2. プッシュ時の権限エラー

remote: You are not allowed to push code to this project.

原因: プロジェクトに対する書き込み権限がない、またはブランチが保護されています。

対処法:

  • プロジェクトオーナーに権限を依頼
  • 保護されたブランチに直接プッシュせず、別のブランチを作成

10.3. マージコンフリクト

複数人が同じファイルを編集した場合、マージ時にコンフリクトが発生します。

対処法:

  1. ローカルでターゲットブランチの最新版を取得
git checkout main
git pull origin main
  1. 作業ブランチに切り替えてマージ
git checkout feature-branch
git merge main
  1. コンフリクトを手動で解決(エディタでマーカーを探す)
<<<<<<< HEAD
あなたの変更
=======
他の人の変更
>>>>>>> main
  1. 解決後、コミットしてプッシュ
git add .
git commit -m "マージコンフリクトを解決"
git push origin feature-branch

10.4. メールでのマージリクエスト作成エラー

Unfortunately, your email message to GitLab could not be processed.
You are not allowed to perform this action.

原因: 上流リポジトリをターゲットにしようとしています。

対処法: メールでのマージリクエスト作成は、現在のリポジトリをターゲットにする場合のみ可能です。上流への貢献はWebインターフェースを使用してください。

11. ベストプラクティス

11.1. ブランチ命名規則

わかりやすいブランチ名を使用します。

  • feature/user-authentication - 新機能
  • bugfix/login-error - バグ修正
  • hotfix/security-patch - 緊急修正
  • 123-add-user-auth - イシュー番号を含む

11.2. コミットメッセージ

明確で具体的なメッセージを書きます。

良い例:

ユーザー認証のログイン機能を実装

- bcryptを使用したパスワードハッシュ化
- JWTトークンによるセッション管理
- ログイン失敗時のエラーハンドリング

悪い例:

修正

11.3. マージリクエストのサイズ

小さく、レビューしやすいマージリクエストを心がけます。

  • 1つのマージリクエストで1つの機能または修正
  • 変更行数は300〜500行以内が理想
  • 大きな変更は複数のマージリクエストに分割

11.4. レビュープロセス

  • マージリクエスト作成時に適切なレビュアーを指定
  • CI/CDパイプラインが成功してからレビューを依頼
  • レビューコメントには建設的に対応
  • 承認後は速やかにマージ

12. まとめ

GitLabのワークフローは、以下のステップで構成されます。

  1. イシューで作業を定義 - 何を作るか明確にする
  2. ブランチで作業を分離 - 安全に変更を加える
  3. コミットで変更を記録 - 履歴を残す
  4. マージリクエストでレビュー - 品質を保証する
  5. マージで統合 - 本番環境へ

このサイクルを繰り返すことで、チーム開発がスムーズになります。最初は複雑に感じるかもしれませんが、実際に手を動かしてみることで理解が深まります。Gitは全ての操作が元に戻せるので、失敗を恐れずに試してください。

実務では、イシュー駆動開発とマージリクエストによるコードレビューを組み合わせることで、高品質なソフトウェア開発が実現できます。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?