GitHub Tips

GitHub Tips

用語

用語 説明
Git 分散型バージョン管理システム
GitHub Git を利用したWebアプリケーション



| 項目 | 正式名称 | 位置づけ | 役割・目的 | 主な作業 | トリガー | 本番反映の判断 | 成果物 | 他ツールとの関係 | |---|---|---|---|---|---|---|---|---| | Git | Git | バージョン管理ツール | 変更履歴の記録 |
  • commit
  • branch
  • merge
| - | - | コミット履歴 |
  • CI/CD のトリガー元
    • push
    • merge
| | GitHub | GitHub | Git リポジトリのホスティングサービス |
  • 共同開発の場
  • CI/CD 実行基盤 (GitHub Actions) の提供
|
  • Pull Request
  • コードレビュー
  • Actions の実行
| - | - |
  • リポジトリ
  • Actions の実行結果
| CI/CD を実現するプラットフォームの一つ | | CI | Continuous Integration
(継続的インテグレーション) | 開発・リリースの自動化手法 |
  • コード変更を頻繁に統合する
  • 早期に問題を検出する
|
  1. ビルド
  2. 単体テスト
  3. 静的解析
  4. Lint
|
  • push
  • Pull Request
| なし (本番反映は対象外) |
  • テスト結果
  • ビルド成果物
|
  • GitHub Actions で実現
  • GitHub 以外でも実現可能
    • Jenkins
    • GitLab CI
    • CircleCI
| | CD | Continuous Delivery
(継続的デリバリー) | 開発・リリースの自動化手法 | 常にリリース可能な状態を保つ |
  1. ステージング環境へのデプロイ
  2. 結合テスト
  3. リリース成果物の作成
| CI の成功 | 手動承認が必要 |
  • リリース候補
    • パッケージ
    • コンテナイメージ
|
  • GitHub Actions + Environments で実現
  • GitHub 以外でも実現可能
| | CD | Continuous Deployment
(継続的デプロイ) | 開発・リリースの自動化手法 | 変更を自動で本番環境まで反映する |
  1. 本番環境へのデプロイ
  2. ヘルスチェック
  3. ロールバック
| CI の成功 | 自動で反映 | 稼働中の本番サービス |
  • GitHub Actions + Environments で実現
  • GitHub 以外でも実現可能
|

### 開発フロー | 順序 | 段階 | 操作 | 担当 | GitHub の機能 | 結果 | 補足 | |---|---|---|---|---|---|---| | 1 | ソース管理 | feature ブランチで開発し push | 開発者 |
  • リポジトリ
  • ブランチ
  • コミット
| GitHub にコードが反映される | Git のホスティング基盤 | | 2 | 変更の提案 | Pull Request を作成 | 開発者 | Pull Request | CI が自動起動 (CI) | CI の実行契機になる | | 3 | CI (ビルド・テスト) |
  • ビルド
  • テスト
  • Lint
を実行 | GitHub Actions | GitHub Actions | 成功 / 失敗がステータスに表示される | .github/workflows/*.yml で定義 | | 4 | セキュリティ検査 |
  • 脆弱性の検出
  • 秘密情報の検出
| GitHub Actions (自動) |
  • Dependabot
  • Code scanning
  • Secret scanning
| 問題があれば検出結果が通知される | CI の一部として実行可能 | | 5 | 品質ゲート・レビュー | コードレビューと承認 | レビュアー |
  • Branch protection rules
  • Required status checks
| merge 可能になる | CI 失敗時は merge を禁止できる | | 6 | merge | main ブランチへ merge | 開発者 | Pull Request | CD ワークフローが起動 (CD) | - | | 7 | 成果物の保管 | ビルド成果物・イメージを保存 | GitHub Actions |
  • GitHub Packages
  • Artifacts
  • Releases
| リリース候補が保管される | コンテナや各種パッケージに対応 | | 8 | CD (デリバリー) | ステージングへ配備 | GitHub Actions |
  • Environments
  • Secrets
  • Variables
  • OIDC
| リリース候補が確認可能になる | 認証情報は Secrets や OIDC で安全に受け渡し | | 9 | 承認 | 本番配備を承認 (Continuous Delivery の場合) | 承認者 | Environments の Required reviewers | 本番配備が許可される | 手動承認フローを実現 | | 10 | CD (デプロイ) | 本番へ配備 | GitHub Actions | GitHub Actions + Environments | サービスが更新される |
  • クラウドと連携
    • AWS
    • Azure
    • GCP
|

gitコマンドの使い方


Install

設定

ユーザ登録
git config --global user.name [名前]
git config --global user.email [メールアドレス]
確認
Windows
git config --list | findstr "user.name"
git config --list | findstr "user.email"
Linux
git config --list | grep "user.name"
git config --list | grep "user.email"
Alias設定
git config --global alias.[新たに設定したいコマンド名] [gitコマンド]

git [新たに設定したいコマンド名]を打つとgit [gitコマンド]が実行される
ローカルリポジトリの状態を確認する
git status
ログの確認
git log
git log - [確認したいログの数]

リポジトリ操作

リポジトリの設定
ローカルリポジトリの作成
git init
  • .gitという隠しフォルダが生成される(このディレクトリ内での作業が可能になる)
リモートリポジトリの指定
git remote add origin [リポジトリのURL]
メインブランチを指定
git branch -M main
アップロード


アップロードするファイルを指定
git add [ファイル名, ディレクトリ名, -A:全て] ":![除外したいファイル名/ディレクトリ名]" ":![除外したいファイル名2/ディレクトリ名2]"
ローカルリポジトリにコミット
git commit -m "コメント"
リモートリポジトリにプッシュ
git push -u origin main  // 初回のみ (競合解決)
git push
git push -f //強制push
  • -u : --set-upstream
  • ローカルブランチの上流が [ブランチ名] へ移る
ダウンロード


clone
  • リモートリポジトリ上の全てのファイルがダウンロードされる
git clone [リポジトリのURL]
pull
  • 更新されているリモートリポジトリのファイルをローカルリポジトリにダウンロード
git pull origin [ブランチ名] // 初回のみ
git pull
ファイル復元
git restore [ファイル名, ディレクトリ名]

状態の取り消し

ステージングエリアに保管されているファイルの取り消し
git restore --staged [取り消したいファイル・フォルダ名]
add 取り消し
git reset
commit メッセージの変更
git commit --amend -m "RENAME"
commit 取り消し
git reset --soft HEAD~1
add & commit 取り消し
git reset HEAD~1
プッシュを取り消す
git reset --hard [取り消すプッシュの直前のコミットハッシュ値] 
[取り消すプッシュの直前のコミットハッシュ値] : git logで確認
プッシュを打ち消す(履歴を残しながら戻す)
git revert [取り消すプッシュの直前のコミットハッシュ値]..HEAD 
[取り消すプッシュの直前のコミットハッシュ値] : git logで確認

ブランチ操作

ブランチ確認
git branch -a
ブランチ作成・移動
git switch -c [新しいブランチ名, 移動先ブランチ名]
ブランチの移動
git switch [切り替え先のブランチ名]
ブランチ合成
git merge [併合したいブランチ]
git merge --allow-unrelated-histories //履歴の異なるブランチを合成することを許可する
→ 自ブランチに[併合したいブランチ]が合成される
ブランチ名変更
git branch -m [元のブランチ名] [変更したブランチ名]

ブランチのマージ

1. 併合先のブランチへ移動
git switch [併合先ブランチ]
2. ブランチを併合
git merge --allow-unrelated-histories [併合元のブランチ]
3. 混乱しないように、併合元のブランチを削除(推奨)
ローカルブランチ削除
git branch -d [削除したいブランチ] // 変更をマージした後実行可能
git branch -D [過去の変更まで完全削除したいブランチ]
リモートリポジトリのブランチを削除
git push origin --delete [削除したいブランチ名]
マージの取り消し
git merge --abort

履歴を別ブランチに移し、最新の状態のみ保持したmainブランチを作成する(初回のみ)

1. 現在のmainブランチをarchiveブランチにリネームする
git branch -m main archive
2. 履歴なしの新しいmainブランチを作成し、現在のファイルをコミットする
git checkout --orphan main        # --orphan : 履歴のみ削除したブランチを作成
git commit -m "Initial commit"
3. リモートリポジトリにpushして適用
git push -f origin main
git push -u origin archive

履歴を別ブランチに移し、最新の状態のみ保持したmainブランチを作成する(2回目以降)

1. archiveブランチに履歴を全て移す
git switch archive
git merge main --allow-unrelated-histories -X theirs
git push
2. 履歴なしの新しいmainブランチを作成し、現在のファイルをコミットする
git switch main
git checkout --orphan tmp
git add -A
git commit -m "Initial commit"
git branch -D main
git branch -m main
3. リモートリポジトリにpushして適用
git push -u origin main -f
4. 最新の状態を適用
git pull origin main --allow-unrelated-histories -X theirs

Gitの更新

Windows
git update-git-for-windows