今回はGitlabを使用する前提で解説してきます。
Gitを使用する目的とは?
Gitはコードのバージョン管理を効率化し、チーム開発やプロジェクト運用をスムーズにするツールです。ブランチを使った分散作業やレビュー機能で品質を保ちながら効率よく統合できます。
また、CI/CDでテストやデプロイを自動化し、リリース作業を迅速化。さらに、イシュー管理やWiki機能でタスクの可視化とチーム間の協調を促進します。
過去のバージョン復元も容易で、トラブル対応も迅速なので、開発効率とプロジェクトの透明性を大幅に向上させることができます。
※イメージ
ゲーム制作のプログラム管理
プログラミング部や趣味でゲームを作る場合、新しいキャラクターやアイテムの追加作業を個別に進めつつ、動作確認後に一つのゲームにまとめられます。
また、まとめる際は問題がないかなど、都度確認・承認工程を設けることができます。
事前準備
Gitのインストール
- もしインストールしていなければ、公式サイトからインストールします。
Git公式サイト
Git for Windows
エディターの準備(おすすめはVS Code)
- コードやファイルを簡単に編集できるツール。
Visual Studio Code
GitLabやGitHubアカウント
基本の運用フロー
Gitの操作は「リポジトリ(プロジェクトの入れ物)」を中心に進めます。
基本的な作業フローは下記の通りです。
- STEP 1リポジトリを作成
プロジェクトの基となるデータを作成
- STEP 2ローカルにリポジトリをクローン
ローカルで作業するためにリポジトリを持ってくる
※初期ダウンロードには時間がかかる場合があります。 - STEP 3ファイルを作成・編集する
まずはじめに、作業ブランチを切るようにしましょう!
※mainブランチのまま作業すると、マージの際に競合が発生します。 - STEP 4作業ブランチをリモートにアップロード
親ブランチにマージするための準備
- STEP 5PR(プルリクエスト)を作成
親ブランチにマージする際に行うレビューの準備
- STEP 6レビューとマージ
既存ブランチとの差分を出して、レビューを行う。
すべてOKなら、承認後マージを行う
※作業時は、STEP3〜6を繰り返すイメージです。
では、それぞれの作業フローを詳しく見ていきましょう!
STEP 1: リポジトリを作成
リポジトリは「そのプロジェクト専用のタイムカプセル」です。
GitLabにログインして以下を行います:
1. 新しいリポジトリを作成
- 「New Project」ボタンを押して、プロジェクト名を入力します。
(例:my-first-git-project
)
2. リポジトリの初期化
- 作成後、GitLabが「このリポジトリをどう使う?」という案内を出します。
- 「HTTPSのURL」をコピーします(後で使います)。
※招待されたユーザーは個別でURLの取得が可能です。
STEP 2: ローカル(パソコン側)にリポジトリをクローンする
コピーしたリポジトリの中身を自分のパソコンに取り込む作業です。
1. ターミナルやコマンドプロンプトを開く
- 例: Windows の「Git Bash」や macOS の「ターミナル」など…
2. プロジェクトをクローン
- 以下のコマンドを入力:
git clone <リポジトリのURL>
(例: git clone https://gitlab.com/username/my-first-git-project.git
)
3. ローカルにコピー完了
- この時点で、GitLabのリポジトリが自分のパソコンにも作られます。
STEP 3: ファイルを作成・編集する
ここからが実際の作業!ファイルを作ったり、編集したりしていきます。
まずはクローンした作業ディレクトリに移動しましょう。
cd <ローカルリポジトリのフォルダ名>
現在のブランチを確認
まず、今どのブランチにいるか確認します。
git branch
- 結果例:
* main
*
がついているのが、今いるブランチです。
重要:ローカルリポジトリを最新に更新する
git pull origin <ブランチ名>
※ブランチが複数ある場合は、更新する際にメインブランチから作業ブランチを作成してください。
例:git pull origin develop
新しいブランチを作成
新しい作業用のブランチを作成して移動します。
git checkout -b feature/add-new-sensor
- このコマンドの意味:
-b
は新しいブランチを作成するオプション。feature/add-new-sensor
はブランチ名(feature/
は機能追加用の目印)。
- 結果:
main
ブランチとは別の作業スペースが作られます。
ブランチ名の選択
チーム開発では、ブランチを使って並行して作業します。
ブランチ戦略としては、以下の方法が一般的です。
main
ブランチ- メインの安定したコードが存在するブランチ。
リリース準備が整ったコードが格納される。
- メインの安定したコードが存在するブランチ。
feature
ブランチ- 新しい機能を開発するために、
main
ブランチから分岐して作成されます。
作業が完了したら、main
にマージします。
例作業ブランチ作成例:git checkout -b fearure/xxxx_xxxx
- 新しい機能を開発するために、
develop
ブランチ- 開発中の作業が集約されるブランチ。
新機能や修正が完成したらdevelop
にマージし、安定版をmain
にリリースします。
作業ブランチ作成例:git checkout -b develop/xxxx_xxxx
- 開発中の作業が集約されるブランチ。
hotfix
やbugfix
ブランチ- 本番環境での問題を解決するために
main
ブランチから直接分岐します。
修正後、main
とdevelop
にマージします。
作業ブランチ作成例:git checkout -b hotfix/xxxx_xxxx
- 本番環境での問題を解決するために
- addブランチ(例外的)
- リポジトリに後からファイルを割り込み追加したい場合に使用
mainとdevelopにマージします。
作業ブランチ作成例:git checkout -b add
- リポジトリに後からファイルを割り込み追加したい場合に使用
注意:あくまで一般的な例なので、プロジェクトや組織によって、ブランチのルールは異なる場合があるので、自分の所属している場所のルールに従ってください。
ブランチ内で作業
新しいファイルを作る
- 「テキストファイル」や「コード」を新しく作り、リポジトリのフォルダに保存します。
変更内容をGitに記録する準備
- 以下のコマンドで変更したファイルを追加
git add .
作業内容を記録(コミット)する
- 「どんな作業をしたか?」をメモとして記録
git commit -m "コメントを追加"
※ "コメントを追加" => この部分には、対応内容を規定のフォーマットに従って記載する
補足:複数行をコミット時のコメントとして使用したい場合
git commit -m "コメントを追加_1" -m "コメントを追加_2"
デフォルトのエディタを使用する方法
git commit
一度に複数行を入力する方法(Linux/Unix)
git commit -F- <<EOF
STEP 4: 作業ブランチをリモートにアップロード
チームと共有するために、作業ブランチをGitLabにプッシュします。
git push origin <ブランチ名>
origin
: GitLabのリポジトリ。feature/add-new-sensor
: プッシュするブランチ名。
STEP 5: PR(プルリクエスト)を作成
GitLab上で、作業ブランチをメインブランチに統合するためのリクエストを作成します。
- GitLabにログインしてリポジトリを開きます。
- 「Pull Request」ページで、新規PRを作成。
- 変更内容を説明:
- 例: 「新しいセンサー追加の作業が完了しました。レビューお願いします!」
STEP 6: レビューとマージ
1. チームリーダーなどがPull Requestを確認。
2. 問題がなければメインブランチに統合(マージ)。
3. 作業ブランチは不要になったら削除します。
git branch -d feature/add-new-sensor
※リモートブランチも削除する場合 ↓ ↓
git push origin --delete feature/add-new-sensor
ブランチの基本コマンド一覧
コマンド | 説明 |
---|---|
git branch | 現在のブランチ一覧を表示 |
git checkout -b <ブランチ名> | 新しいブランチを作成して切り替える |
git checkout <ブランチ名> | 既存のブランチに切り替える |
git branch -d <ブランチ名> | ローカルのブランチを削除 |
git push origin <ブランチ名> | リモートリポジトリにブランチをプッシュ |
git push origin –delete <ブランチ名> | リモートリポジトリのブランチを削除 |
チーム運用のポイント
1つのブランチは1つのタスクに使う
- 例: 「機能追加」なら
feature/
、「バグ修正」ならhotfix/
を接頭辞につける。
作業が終わったら必ずMerge Request
- 他のメンバーが確認してからメインブランチに統合。
古いブランチは削除する
- 不要なブランチが増えると管理が難しくなるため、整理を心がけましょう。
Gitコマンド一覧表
カテゴリ | コマンド | 説明 |
---|---|---|
初期設定 | git init | 新しいGitリポジトリを初期化する |
git clone <リポジトリURL> | リモートリポジトリをローカルにクローンする | |
git config --global user.name "名前" | ユーザー名を設定する | |
git config --global user.email "メール" | ユーザーメールを設定する | |
git config --list | 設定情報を確認する | |
git config --global core.editor <エディタ> | コミット時に使用するデフォルトエディタを設定する | |
ステージング と コミット | git add <ファイル名> | 指定したファイルをステージングエリアに追加する |
git add . | すべての変更をステージングエリアに追加する | |
git commit -m "メッセージ" | ステージングエリアの変更をコミットする (メッセージ付き) | |
git commit --amend | 最後のコミットメッセージを修正する | |
リモート操作 | git remote add origin <URL> | リモートリポジトリを追加する |
git push origin <ブランチ名> | 変更をリモートリポジトリにプッシュする | |
git pull origin <ブランチ名> | リモートリポジトリから最新の変更を取得し、 ローカルにマージする | |
git fetch | リモートリポジトリから最新の変更を取得する (マージはしない) | |
git remote -v | リモートリポジトリのURLを確認する | |
ブランチ操作 | git branch | 現在のブランチを確認する |
git branch <ブランチ名> | 新しいブランチを作成する | |
git checkout <ブランチ名> | 指定したブランチに切り替える | |
git switch <ブランチ名> | 指定したブランチに切り替える | |
git checkout -b <ブランチ名> | 新しいブランチを作成して切り替える | |
git merge <ブランチ名> | 指定したブランチを現在のブランチにマージする | |
git branch -d <ブランチ名> | 使用済みのブランチを削除する | |
ログ・履歴 確認 | git log | コミット履歴を表示する |
git log --oneline | 簡易的な形式でコミット履歴を表示する | |
git log --graph | グラフ形式でコミット履歴を表示する | |
git diff | 作業ディレクトリの変更点を表示する | |
git diff <ブランチ名> | ブランチ間の変更を比較する | |
git show <コミットID> | 特定のコミット内容を表示する | |
ステージング 取り消し | git reset HEAD <ファイル名> | ステージングエリアからファイルを取り消す |
git checkout -- <ファイル名> | ファイルの変更を元に戻す (ステージングされていない内容を取り消す) | |
リポジトリ 状態確認 | git status | リポジトリの現在の状態を確認する |
git clean -f | 未追跡ファイルを削除する | |
タグ付け | git tag <タグ名> | 現在のコミットにタグを作成する |
git tag -a <タグ名> -m "メッセージ" | 注釈付きタグを作成する | |
git push origin <タグ名> | タグをリモートリポジトリにプッシュする | |
リベース | git rebase <ブランチ名> | 現在のブランチを指定したブランチにリベースする |
git rebase --continue | リベース中に発生した競合を解決した後、 リベースを再開する | |
スタッシュ | git stash | 変更を一時的に保存する |
git stash pop | スタッシュを適用し、一時保存を削除する | |
git stash list | スタッシュのリストを表示する | |
取り消し と 修正 | git revert <コミットID> | 指定したコミットを取り消す(履歴を保持) |
git reset --soft <コミットID> | 指定したコミットまでを取り消す (変更をステージングエリアに残す) | |
git reset --hard <コミットID> | 指定したコミットまでを完全に取り消す (変更も削除) | |
git cherry-pick <コミットID> | 特定のコミットを現在のブランチに適用する |