チーム開発におけるコードの整合性を保ち,手戻りを防ぐために以下の運用フローを徹底する.
main から派生させて作成する.main へマージし,原則として削除する..gitignore:
node_modules/ 等),環境変数ファイル(.env 等)は必ず除外する.git add . を安全に使うための前提条件であるため,メンバー追加時にも確認する.作業の種類を一目で判別するために,以下のプレフィックスを使用する.
| プレフィックス | 用途 |
|---|---|
feature/ | 新機能の実装,仕様変更 |
fix/ | バグ修正 |
refactor/ | コードの整理(挙動は変えない) |
docs/ | ドキュメントの追記・修正 |
chore/ | ビルド設定やツール導入など,雑多な作業 |
[プレフィックス][概要]/ を使用する.概要内の単語区切りはハイフン - を使用する.feature/player-jumpfix/collision-bugdocs/guide-update作業を開始してからマージされるまでの手順.
作業開始前は必ず main ブランチに切り替え,リモートの最新状態を取り込む.
git checkout main git pull origin main
最新の main から新しいブランチを作成して移動する.
git checkout -b feature/new-function
git add . git commit -m "[add] 新機能を実装"
作業ブランチをリモートリポジトリへ送信する.
git push origin feature/new-function
GitHub CLI (gh) を使用して PR を作成する.
gh pr create --title "[add] 新機能を実装" --body "概要"
--title はコミットメッセージと同じ書式([タグ] 内容)とする.--reviewer でレビュワーを指定する.main に残る).
gh pr merge --merge --delete-branch
マージ完了後はローカル環境も最新状態に戻し,古いブランチを削除する.
git checkout main git pull origin main git branch -d feature/new-function
[タグ] 内容| タグ | 用途 |
|---|---|
[add] | ファイルや機能の追加 |
[update] | 機能やデータの更新・修正 |
[fix] | バグ修正 |
[remove] | 削除 |
[clean] | 整理,リファクタリング |
他メンバーの変更と競合した場合の対処手順.
main の取り込み
作業ブランチに main の最新内容をリベースして競合箇所を洗い出す.merge ではなく rebase を使うことで,履歴が線形に保たれレビューしやすくなる.
git checkout main git pull origin main git checkout feature/new-function git rebase main
競合の解消
エディタ上で <<<<<<<,=======,>>>>>>> で囲まれた箇所を手動で修正する.修正後,以下のコマンドでリベースを続行する.
git add [修正したファイル] git rebase --continue
全ての競合が解消されたらプッシュする.リベース後は履歴が書き換わるため -f オプションが必要になる.
git push -f origin feature/new-function
まだプッシュしていない場合
コミットを取り消し,変更内容を保持したまま新しいブランチへ移動する.
git reset --soft HEAD^ git checkout -b feature/new-function git commit -m "[add] ..."
すでにプッシュしてしまった場合
main への force push はチーム全員の履歴を壊す危険があるため,自分では対処しない.直ちにチームメンバーに報告し,全員で対応方針を決める.