diff --git a/MEMO.md b/MEMO.md new file mode 100644 index 0000000..747c49a --- /dev/null +++ b/MEMO.md @@ -0,0 +1,173 @@ +越後さんの活用方法 + +mainを軸にするがいじるときはすべてbranchにしてる + +issueごとにbranchを切って、完了後にmainにmergeする→同時に動かしている場合はどうすればいいのかな? +ステージング環境・開発環境のbranchも構築しておく + +main +↓ +開発環境 +↓ +issueごと + +ってイメージ + +PRは開発環境にmergeして確認を行うとのこと + + +worktree +→リポジトリと同レベルの階層にworktreeのフォルダが作られるとのこと + + + +開発の流れを考えたい +1. 新規 +2. 機能追加 +3. テスト + +シナリオ1:新規開発(ゼロからプロジェクトを始める) +これは、新しいアイデアを形にする最初のステップです。 + +計画フェーズ(何をやるか決める) + +Issueを作成: まず、この新規プロジェクトで達成したいことの全体像を、一つの大きなIssueとして作成します。「ユーザー管理機能を持つブログアプリを作る」などです 。   + +タスクを分解: その大きなIssueの本文に、チェックリスト形式で必要な機能(「ユーザー登録」「記事投稿」「記事一覧表示」など)を書き出します。これが最初のタスクリストになります 。   + +プロジェクトボードに追加: 作成したIssueをGitHub Projectsのカンバンボードに追加し、「Todo」カラムに配置します 。   + +開発フェーズ(コードを書く) + +リポジトリを作成: GitHub上に新しいリポジトリを作成します。 + +初期開発: この段階ではブランチはmain(またはdevelop)一本で進めることが多いです。まずは基本的な土台(フレームワークの導入、ディレクトリ構成の決定など)を構築します。 + +コミット: ある程度キリの良いところでコミットを重ねていきます。 + +テストフェーズ(品質を保つ仕組みを作る) + +自動テストを設定: GitHub Actionsを使い、「mainブランチにコードがプッシュされたら、自動でテストを実行する」というワークフローを設定します。これにより、今後の開発で土台が壊れていないかを常にチェックできます。 + +シナリオ2:機能追加(最も一般的な開発サイクル) +ここからがgit worktreeの真価が発揮される場面です。 + +計画フェーズ + +Issueを作成: 追加したい機能(例:「記事にコメントを付ける機能」)をIssueとして作成します 。バグの可能性や仕様などを詳細に記述し、   + +featureラベルを付けます。 + +プロジェクトボードで管理: 作成したIssue(#123とします)をGitHub Projectsのカンバンボードの「Todo」カラムに配置します。 + +開発フェーズ + +作業場を準備 (git worktree): 今、別の作業をしていたとしても問題ありません。stashは不要です。ターミナルで以下のコマンドを実行し、新しい作業場を瞬時に用意します。 + +Bash + +# feature/comment-function という新しいブランチを作り、 +#../comment-work という新しいフォルダに展開する +git worktree add -b feature/comment-function../comment-work +開発に着手: cd../comment-workで新しい作業場に移動し、コーディングに集中します。 + +Issueと連携: コミットメッセージにIssue番号を含めることで、進捗を自動で連携させます 。   + +Bash + +git commit -m "feat: コメント投稿フォームを作成 #123" +レビュー&テストフェーズ + +プルリクエストを作成: 作業が終わったら、feature/comment-functionブランチをプッシュし、GitHub上でmainブランチへの**プルリクエスト(PR)**を作成します 。PRのタイトルや本文にもIssue番号を記載すると、関連性が一目瞭然になります 。   + +自動テストを実行 (GitHub Actions): PRが作成されると、GitHub Actionsが自動的に起動し、この変更によって既存の機能が壊れていないかをテストします。 + +コードレビュー: 他のメンバー(あるいは未来の自分)がPRを見て、コードに対するフィードバックをコメントします。 + +修正: 指摘があれば、comment-workフォルダで修正し、再度プッシュします。PRは自動で更新されます。 + +マージ&デプロイ + +マージ: レビューで承認(Approve)され、すべてのテストが通ったら、PRをマージします。これで新機能がmainブランチに統合されます。 + +後片付け: 不要になった作業場とブランチを片付けます。 + +Bash + +# まずはメインの作業場に戻る +cd../my-project +# 作業場を削除 +git worktree remove../comment-work +# ブランチを削除 +git branch -d feature/comment-function +シナリオ3:バグ修正(緊急の割り込み作業) +git worktreeが最も輝くシナリオの一つです。 + +計画フェーズ + +Issueを作成: 発見されたバグ(例:「特定の条件下でコメントが投稿できない」)をIssueとして作成します。再現手順などを詳しく書き、bugラベルと高い優先度を設定します。 + +開発フェーズ + +割り込み作業の開始 (git worktree): あなたが「機能追加」の作業に集中している真っ最中でも、今の作業を一切中断する必要はありません。 + +Bash + +# hotfix/comment-bug という新しいブランチをmainから作り、 +#../bugfix-work というフォルダに展開する +git worktree add -b hotfix/comment-bug../bugfix-work main +修正作業: cd../bugfix-workでバグ修正用の作業場に移動し、迅速に修正を行います。コミットメッセージにはfix:という接頭辞とIssue番号を入れます。 + +Bash + +git commit -m "fix: コメント投稿時の認証エラーを修正 #124" +レビュー&テスト、マージ + +ここからの流れは「機能追加」とほぼ同じです。PRを作成し、自動テストとレビューを経て、迅速にmainブランチにマージします。 + +まとめ +シナリオ 計画(どこで?) 開発(どうやって?) レビュー(どうやって?) テスト(いつ?) +新規開発 GitHub Issueで全体像を定義 mainブランチで土台を構築 不要 mainへのプッシュ時 +機能追加 GitHub Issueでタスク化 git worktreeで独立した作業場を作成 Pull Requestで議論 PR作成・更新時 +バグ修正 GitHub Issueで問題を報告 git worktreeで緊急避難的に作業場を作成 Pull Requestで迅速に確認 PR作成・更新時 + +Google スプレッドシートにエクスポート +この3つの流れを基本の型として持っておくことで、どんな状況でも迷うことなく、ADHDの特性を活かした柔軟でスピーディーな開発を進めることができるようになります。 + + + + +1. 新規開発 + 1. 計画フェーズ + 1. 概要 + 1. どんなものを作るのかの仕様書を作ってすべてのタスクをissueを作成する + 2. 流れ + 1. リポジトリを作る + 2. 開発用ブランチを作る + 3. 仕様書を作成する + 4. タスクを一覧化する + 5. issueに記載する + 2. 開発フェーズ + 1. 概要 + 1. 計画で決まったissueを進めていき完成させる + 2. 流れ + 1. 開発用ブランチを起点に各issue用のブランチを作る + 2. 各issue用のブランチにcheckoutして開発を進める + 3. 開発完了後に〇〇する→ここがわからない + 4. + 3. テストフェーズ + 1. 概要 + 1. 開発完了した後にテストを実行する + 2. 流れ + 1. ここもわからない + +2. 機能追加 + 1. 計画フェーズ + 2. 開発フェーズ + 3. レビュー&テストフェーズ + 4. マージ&デプロイ + +3. バグ修正 + 1. 計画フェーズ + 2. 開発フェーズ + 3. レビュー&テスト・マージ \ No newline at end of file diff --git a/advanced/ai-parallel-development.md b/advanced/ai-parallel-development.md new file mode 100644 index 0000000..9e52bd6 --- /dev/null +++ b/advanced/ai-parallel-development.md @@ -0,0 +1,525 @@ +--- +layout: default +title: "AI駆動並列開発ガイド - GitHubで実現する次世代開発" +description: "複数のAIを活用して並列開発を行うためのGitHub完全活用ガイド" +--- + +# 🤖 AI駆動並列開発ガイド + +複数のAIツール(Claude、GPT-4、GitHub Copilot等)を活用して、GitHubで効率的に並列開発を行う方法を解説します。 + +--- + +## 📚 目次 + +1. [AI駆動並列開発とは?](#ai駆動並列開発とは) +2. [なぜGitHubが最適なのか](#なぜgithubが最適なのか) +3. [事前準備](#事前準備) +4. [実践ワークフロー](#実践ワークフロー) +5. [理解すべき重要ポイント](#理解すべき重要ポイント) +6. [実例:ECサイト開発](#実例ecサイト開発) +7. [トラブルシューティング](#トラブルシューティング) + +--- + +## 🎯 AI駆動並列開発とは? + +### 概念図 +``` +┌─────────────────────────────────────────────┐ +│ 開発者(指揮者) │ +└────────┬────────┬────────┬────────┬─────────┘ + ↓ ↓ ↓ ↓ + ┌────┴───┐┌──┴───┐┌──┴───┐┌──┴───┐ + │ Claude ││ GPT-4 ││Copilot││ Bard │ + │ (UI担当)││(API) ││(テスト)││(文書)│ + └────┬───┘└──┬───┘└──┬───┘└──┬───┘ + ↓ ↓ ↓ ↓ + ┌────┴────────┴────────┴────────┴───┐ + │ GitHub Repository │ + └───────────────────────────────────────┘ +``` + +### メリット +- **開発速度**: 従来の2-5倍高速 +- **品質向上**: AIによる一貫性のあるコード +- **並列作業**: 複数機能を同時開発 +- **24時間開発**: AIは休まない + +--- + +## 🌟 なぜGitHubが最適なのか + +### 1. **ブランチ戦略** +複数のAIが干渉せずに作業可能 +``` +main +├── ai/claude-frontend +├── ai/gpt4-backend +├── ai/copilot-tests +└── ai/bard-docs +``` + +### 2. **自動化機能** +- GitHub Actions で品質チェック +- 自動マージによる統合 +- Issue の自動クローズ + +### 3. **レビュー体制** +- Pull Request で人間がチェック +- AI生成コードの品質保証 +- 議論の場の提供 + +--- + +## 🛠️ 事前準備 + +### 1. リポジトリ設定 + +#### ディレクトリ構造 +``` +project/ +├── .github/ +│ ├── workflows/ # 自動化設定 +│ ├── ISSUE_TEMPLATE/ # Issue テンプレート +│ └── pull_request_template.md +├── frontend/ # Claude 担当 +├── backend/ # GPT-4 担当 +├── tests/ # Copilot 担当 +└── docs/ # Bard 担当 +``` + +#### 必須ファイル作成 + +**.github/ISSUE_TEMPLATE/ai_task.md** +```markdown +--- +name: AI Task +about: AI に割り当てるタスク +title: '[AI] ' +labels: ai-task +assignees: '' +--- + +## タスク概要 + + +## 担当AI +- [ ] Claude +- [ ] GPT-4 +- [ ] GitHub Copilot +- [ ] その他 + +## 要件 + + +## 期待する成果物 + + +## 依存関係 + +``` + +**.github/workflows/ai-parallel-check.yml** +```yaml +name: AI並列開発チェック + +on: + pull_request: + types: [opened, synchronize] + +jobs: + parallel-validation: + runs-on: ubuntu-latest + strategy: + matrix: + check: [lint, test, build, security-scan] + + steps: + - uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '18' + cache: 'npm' + + - name: Install dependencies + run: npm ci + + - name: Run ${{ matrix.check }} + run: npm run ${{ matrix.check }} + + - name: AI生成コード検証 + if: contains(github.event.pull_request.labels.*.name, 'ai-generated') + run: | + echo "AI生成コードの追加検証を実行" + npm run validate:ai-code +``` + +### 2. ブランチ保護設定 + +```bash +# GitHub CLI での設定 +gh api repos/:owner/:repo/branches/main/protection \ + --method PUT \ + --field required_status_checks='{"strict":true,"contexts":["parallel-validation"]}' \ + --field enforce_admins=false \ + --field required_pull_request_reviews='{"required_approving_review_count":1}' \ + --field restrictions=null +``` + +--- + +## 🚀 実践ワークフロー + +### Phase 1: タスク分解と Issue 作成 + +```bash +# 1. プロジェクト作成 +gh repo create my-ai-project --public --clone + +# 2. Issue 一括作成 +gh issue create -t "認証UIコンポーネント作成" -b "Reactで認証画面を実装" -l "ai-task,frontend" +gh issue create -t "認証API実装" -b "Express.jsでJWT認証エンドポイント" -l "ai-task,backend" +gh issue create -t "認証テスト作成" -b "UIとAPIの統合テスト" -l "ai-task,test" +gh issue create -t "認証ドキュメント作成" -b "認証フローの技術文書" -l "ai-task,docs" +``` + +### Phase 2: AI への指示とブランチ作成 + +#### Claude への指示例(フロントエンド) +```markdown +以下の Issue #1 の要件に基づいて、React認証コンポーネントを作成してください。 + +要件: +- Material-UI を使用 +- メールとパスワードのフォーム +- バリデーション機能 +- エラーハンドリング + +ファイル構造: +- src/components/Auth/Login.jsx +- src/components/Auth/Register.jsx +- src/components/Auth/auth.css +``` + +#### 各AIでの作業 +```bash +# ブランチ作成と切り替え +git checkout -b ai/claude-auth-ui +# Claudeが生成したコードを追加 +git add frontend/ +git commit -m "feat: AI-generated auth UI components #1" +git push origin ai/claude-auth-ui + +# 同様に他のAIでも実行 +git checkout -b ai/gpt4-auth-api +# GPT-4のコードを追加... +``` + +### Phase 3: 並列 Pull Request + +```bash +# PR作成(各ブランチで) +gh pr create \ + --title "feat: 認証UI実装 by Claude AI" \ + --body "$(cat < B[自動Lint] + B --> C[自動テスト] + C --> D[セキュリティスキャン] + D --> E[人間レビュー] + E --> F[マージ] +``` + +--- + +## 📋 実例:ECサイト開発 + +### プロジェクト構造 +``` +ecommerce-ai/ +├── frontend/ # Claude +│ ├── ProductList +│ ├── Cart +│ └── Checkout +├── backend/ # GPT-4 +│ ├── products-api +│ ├── orders-api +│ └── payment-api +├── mobile/ # Copilot +│ └── react-native-app +└── tests/ # Bard + ├── e2e/ + └── integration/ +``` + +### タイムライン(1日の流れ) +``` +09:00 - タスク分解、Issue作成 +09:30 - 各AIへ指示出し +10:00 - AI作業中(並列) +12:00 - 最初のPR確認 +13:00 - フィードバック、AI再生成 +15:00 - 統合テスト +16:00 - 本番環境へデプロイ +``` + +### 実績 +- **開発期間**: 3日(従来は2週間) +- **コード行数**: 15,000行 +- **テストカバレッジ**: 85% +- **バグ数**: 従来の40%減 + +--- + +## 🔧 トラブルシューティング + +### よくある問題と解決策 + +#### 1. AI間の仕様不整合 +```bash +# 解決: 共通インターフェースファイル +echo "export interface UserAPI { ... }" > shared/interfaces.ts +# 全AIにこのファイルを参照させる +``` + +#### 2. マージコンフリクト +```bash +# 解決: 定期的な統合 +git checkout -b integration/daily +git merge --no-ff ai/claude-branch +git merge --no-ff ai/gpt4-branch +# コンフリクト解決後 +git push origin integration/daily +``` + +#### 3. AIの出力品質が低い +```yaml +# .github/ai-quality-check.yml +quality_thresholds: + complexity: 10 # 循環的複雑度 + duplication: 5% # 重複コード + test_coverage: 80% # テストカバレッジ +``` + +#### 4. 依存関係の問題 +```json +// package.json でバージョン固定 +{ + "dependencies": { + "react": "18.2.0", // 固定 + "express": "4.18.2" // 固定 + } +} +``` + +--- + +## 🎯 ベストプラクティス + +### 1. **日次スタンドアップ with AI** +```markdown +## AI Status Check +- [ ] Claude: フロントエンド進捗 70% +- [ ] GPT-4: API実装完了 +- [ ] Copilot: テスト作成中 +- [ ] 統合テスト: 本日15時予定 +``` + +### 2. **AI ローテーション** +異なるAIに同じタスクを割り当てて、最良の実装を選択 + +### 3. **継続的な学習** +```yaml +# AIの出力を評価・記録 +ai_performance: + claude: + success_rate: 85% + avg_review_time: 30min + gpt4: + success_rate: 90% + avg_review_time: 25min +``` + +### 4. **ドキュメント自動生成** +```bash +# PR作成時に自動でドキュメント更新 +npm run generate:docs +git add docs/ +git commit -m "docs: auto-update API documentation" +``` + +--- + +## 🚀 次のステップ + +1. **小規模プロジェクトで試す** + - TODO アプリなど簡単なものから + +2. **AIの特性を理解** + - Claude: UI/UXに強い + - GPT-4: ロジック・アルゴリズム + - Copilot: 既存コードの拡張 + +3. **チームへの展開** + - ワークショップ開催 + - ガイドライン策定 + +4. **メトリクス収集** + - 開発速度の改善率 + - バグ率の変化 + - チーム満足度 + +--- + +## 📚 関連リソース + +- [GitHub Actions 詳細ガイド](../features/05-github-actions.md) +- [ブランチ戦略ガイド](../features/01-repository-basics.md) +- [Pull Request ベストプラクティス](../features/03-pull-requests.md) + +--- + +## 🤝 コミュニティ + +AI駆動開発について議論しましょう: +- [GitHub Discussions](https://github.com/marketing-shibata50/github-research-tool/discussions) +- Issues での質問も歓迎 + +--- + +*最終更新: 2024年1月* \ No newline at end of file diff --git a/advanced/github-features-detailed.md b/advanced/github-features-detailed.md new file mode 100644 index 0000000..6a0d112 --- /dev/null +++ b/advanced/github-features-detailed.md @@ -0,0 +1,2005 @@ +--- +layout: default +title: "GitHub機能詳細ガイド - 全20機能の完全解説" +description: "GitHubの全機能を実例とベストプラクティスと共に徹底解説" +--- + +# 📚 GitHub機能詳細ガイド - 全20機能の完全解説 + +GitHubの全20機能について、実践的な使い方からプロレベルの活用法まで徹底的に解説します。 + +--- + +## 📋 目次 + +### 基本機能(1-6) +1. [リポジトリ(Repository)](#1-リポジトリrepository) +2. [ブランチ(Branch)](#2-ブランチbranch) +3. [コミット(Commit)](#3-コミットcommit) +4. [プルリクエスト(Pull Request)](#4-プルリクエストpull-request) +5. [イシュー(Issues)](#5-イシューissues) +6. [プロジェクト(Projects)](#6-プロジェクトprojects) + +### 自動化・公開機能(7-9) +7. [アクション(Actions)](#7-アクションactions) +8. [ページ(Pages)](#8-ページpages) +9. [ウィキ(Wiki)](#9-ウィキwiki) + +### ソーシャル機能(10-12) +10. [ウォッチ(Watch)](#10-ウォッチwatch) +11. [スター(Star)](#11-スターstar) +12. [フォーク(Fork)](#12-フォークfork) + +### Git操作機能(13-16) +13. [クローン(Clone)](#13-クローンclone) +14. [プッシュ(Push)](#14-プッシュpush) +15. [プル(Pull)](#15-プルpull) +16. [マージ(Merge)](#16-マージmerge) + +### 拡張機能(17-20) +17. [ディスカッション(Discussions)](#17-ディスカッションdiscussions) +18. [ギスト(Gist)](#18-ギストgist) +19. [パッケージ(Packages)](#19-パッケージpackages) +20. [スポンサー(Sponsors)](#20-スポンサーsponsors) + +--- + +## 1. 📁 リポジトリ(Repository) + +### 概要 +リポジトリは、プロジェクトの全ファイル、履歴、設定を保存する基本単位です。Googleドライブのフォルダに似ていますが、変更履歴を完全に記録し、複数人での同時編集を可能にします。 + +### 詳細機能 + +#### リポジトリの種類 +``` +┌─────────────────────────────────────────────┐ +│ リポジトリタイプ │ +├─────────────────┬───────────────────────────┤ +│ Public │ Private │ +├─────────────────┼───────────────────────────┤ +│ ✓ 誰でも閲覧可 │ ✓ 招待者のみ閲覧可 │ +│ ✓ 検索可能 │ ✗ 検索不可 │ +│ ✓ 無料・無制限 │ ✓ 無料(個人) │ +│ ✓ GitHub Pages │ ✓ Pro版でPages可 │ +└─────────────────┴───────────────────────────┘ +``` + +#### 必須ファイル構成 +``` +my-project/ +├── README.md # プロジェクト説明(必須) +├── LICENSE # ライセンス情報 +├── .gitignore # 無視ファイル設定 +├── .github/ # GitHub設定 +│ ├── workflows/ # Actions設定 +│ ├── ISSUE_TEMPLATE/ +│ ├── PULL_REQUEST_TEMPLATE.md +│ └── CODEOWNERS # コードオーナー +├── docs/ # ドキュメント +├── src/ # ソースコード +└── tests/ # テストコード +``` + +### 実践例 + +#### 1. テンプレートからリポジトリ作成 +```bash +# GitHub CLIを使用 +gh repo create my-app --template owner/template-repo --public + +# テンプレート使用の利点 +- 標準構成の即時適用 +- CI/CD設定の継承 +- コーディング規約の統一 +``` + +#### 2. モノレポ構成 +``` +company-monorepo/ +├── packages/ +│ ├── frontend/ # Reactアプリ +│ ├── backend/ # Node.js API +│ ├── mobile/ # React Native +│ └── shared/ # 共通ライブラリ +├── lerna.json # Lernaモノレポ設定 +└── package.json # ルート設定 +``` + +#### 3. リポジトリ設定のベストプラクティス +```yaml +# .github/settings.yml (probot/settings使用) +repository: + name: my-project + description: プロジェクトの説明 + private: false + has_issues: true + has_projects: true + has_wiki: true + has_downloads: true + default_branch: main + allow_squash_merge: true + allow_merge_commit: true + allow_rebase_merge: false + delete_branch_on_merge: true + enable_automated_security_fixes: true +``` + +### 高度な活用 + +#### 1. リポジトリインサイト分析 +``` +Insights → 各種分析 +├── Pulse: 週次/月次アクティビティ +├── Contributors: 貢献者統計 +├── Community: コミュニティ健全性 +├── Traffic: アクセス統計 +├── Commits: コミット頻度 +├── Code frequency: コード追加/削除 +└── Dependency graph: 依存関係 +``` + +#### 2. セキュリティ設定 +```yaml +# Security → Settings +- ✓ Dependency alerts +- ✓ Dependabot security updates +- ✓ Code scanning alerts +- ✓ Secret scanning alerts +``` + +#### 3. アクセス管理 +``` +Settings → Manage access +├── Collaborators: 個別招待 +├── Teams: チーム単位管理 +└── Deploy keys: CI/CD用鍵 +``` + +### トラブルシューティング + +#### リポジトリサイズ問題 +```bash +# 大きなファイルの履歴削除 +git filter-branch --force --index-filter \ + "git rm --cached --ignore-unmatch path/to/large-file" \ + --prune-empty --tag-name-filter cat -- --all + +# Git LFS導入 +git lfs track "*.psd" +git lfs track "*.zip" +git add .gitattributes +``` + +--- + +## 2. 🌿 ブランチ(Branch) + +### 概要 +ブランチは、メインのコードから分岐して独立した開発を行うための仕組みです。複数の機能を並行開発したり、実験的な変更を安全に試すことができます。 + +### ブランチ戦略 + +#### 1. Git Flow +``` +main (production) +│ +├── develop (開発統合) +│ ├── feature/user-auth +│ ├── feature/payment +│ └── feature/notifications +│ +├── release/v1.2.0 +│ └── 本番リリース準備 +│ +└── hotfix/critical-bug + └── 緊急修正 +``` + +#### 2. GitHub Flow(シンプル) +``` +main +├── feature/new-feature +├── fix/bug-123 +└── docs/update-readme +``` + +#### 3. GitLab Flow(環境別) +``` +main +├── pre-production +├── production +└── feature-branches +``` + +### 実践的なブランチ運用 + +#### ブランチ命名規則 +```bash +# 機能追加 +feature/user-authentication +feature/JIRA-123-shopping-cart + +# バグ修正 +fix/login-error +bugfix/issue-456 + +# ドキュメント +docs/api-documentation +docs/installation-guide + +# リファクタリング +refactor/database-optimization +chore/update-dependencies + +# リリース +release/v2.0.0 +release/2023-12-01 +``` + +#### ブランチ保護ルール +```yaml +# branch protection rules +main: + required_reviews: 2 + dismiss_stale_reviews: true + require_code_owner_reviews: true + required_status_checks: + - continuous-integration/travis-ci + - security/snyk + enforce_admins: false + restrictions: + users: [] + teams: ["maintainers"] +``` + +### 高度なブランチ操作 + +#### 1. ブランチの比較とマージ予測 +```bash +# ブランチ間の差分確認 +git diff main..feature/new-feature + +# マージ予測(ドライラン) +git merge --no-commit --no-ff feature/new-feature +git diff --cached +git merge --abort # 取り消し + +# コンフリクト事前確認 +git log --oneline --left-right main...feature/new-feature +``` + +#### 2. ブランチのクリーンアップ +```bash +# マージ済みブランチ一覧 +git branch --merged main + +# リモートの削除済みブランチを反映 +git remote prune origin + +# 一括削除スクリプト +git branch --merged main | grep -v "main\|develop" | xargs -n 1 git branch -d +``` + +#### 3. ブランチ復元 +```bash +# 削除したブランチを復元 +git reflog +git checkout -b recovered-branch HEAD@{2} +``` + +### ワークフロー例 + +#### フィーチャーブランチワークフロー +```bash +# 1. 最新のmainから分岐 +git checkout main +git pull origin main +git checkout -b feature/awesome-feature + +# 2. 開発作業 +# ... コード変更 ... +git add . +git commit -m "feat: add awesome feature" + +# 3. 定期的にmainの変更を取り込む +git checkout main +git pull origin main +git checkout feature/awesome-feature +git rebase main + +# 4. プッシュしてPR作成 +git push origin feature/awesome-feature +gh pr create --fill +``` + +--- + +## 3. 💾 コミット(Commit) + +### 概要 +コミットは、ファイルの変更を履歴として記録する操作です。各コミットは一意のIDを持ち、いつでも過去の状態に戻すことができます。 + +### コミットメッセージの規約 + +#### Conventional Commits +``` +(): + + + +