Git と GitHub のワークフロー
リモート: origin = https://github.com/TTT-b/stremio-ai-translator。デフォルトブランチ: main。Windows PowerShell コマンドを使用。
作業開始
git status -sbとgit fetch originを実行。- ワーキングツリーがクリーンな場合:
git pull --ff-only。クリーンでない場合は停止し、何が変更されたかをユーザーに伝える。
作業中
- 自明でない作業はブランチで行う:
git switch -c <短い名前>。小規模で安全な修正は、ユーザーがそう指示した場合にのみmainに直接コミットしてよい。 - 小さく焦点を絞ったコミットを行う。メッセージ: リリースの場合は
vX.Y.Z: 短い概要、それ以外の場合は種類: 短い概要(fix:、feat:、docs:、test:、chore:)。 - ファイルは名前でステージングする(
git add <ファイル>)。git add .や-Aを無分別に使わない。事前にgit diff --stagedで確認する。 .env、settings.json、data/、logs/、node_modules/、dist-electron/、release/、トークン、APIキーは決してコミットしない。もし秘密情報がコミットされた場合は停止し、ユーザーにローテーションを促す。- すべてのコミットの前に
npm run checkを実行する。失敗したままコミットしない。
プッシュ
- ユーザーが要求した場合のみプッシュする。通常のプッシュ:
git push。mainでは決して--forceしない。個人ブランチでどうしてもフォースプッシュが必要な場合は、--force-with-leaseを使用し、事前に確認を取る。 - リリース:
package.jsonのversionを上げ、動作が変わった場合は README/TROUBLESHOOTING を更新し、コミットし、ユーザーが確認した後にのみgit tag vX.Y.Zとgit push --follow-tagsを実行する。各タグは固有のコミットを指していなければならない。
リリース確認(問題があるように見えるときだけでなく、すべてのリリースで実施)
npm run checkが成功すること(これにはRELEASE_NOTESにpackage.jsonのバージョンに対応する he と en のリリースノートが含まれているかのテストが含まれる)。package.jsonのバージョンが最新の公開タグ(git tag --sort=-v:refname | Select-Object -First 1)より高いこと。アプリ内のアップデータはより高いバージョンのみを提供する。npm run distでビルドし、ユーザーにrelease/からインストールしてもらい、公開前にユーザーのOKを待つ。- 公開後、
gh release view vX.Y.Zでインストーラの.exe、その.blockmap、latest.ymlが一覧表示されること。latest.ymlがないと、アプリ内の「アップデートを確認」が機能しない。 - ユーザーに以前のバージョンで「アップデートを確認」を押し、新しいバージョンが表示されることを確認するよう促す。
ラップトップ/スマートフォンとの同期
- デスクトップが作業マシンです。ユーザーがGitHubが更新されたと言った場合:
git fetch originを実行し、git log --oneline HEAD..origin/mainを表示し、その後git pull --ff-onlyを実行する。fast-forward できない場合は、差分を表示してマージまたはリベースの前に確認を取る。
推奨GitHub設定(ユーザーがWeb UIで設定)
リポジトリ設定 -> ブランチ: main を保護(プルリクエストを必須、フォースプッシュをブロック、削除をブロック)。設定 -> コードセキュリティ: プッシュ保護付きのSecret scanning、Dependabotアラート、Dependabotセキュリティアップデートを有効化。設定 -> 一般: 「ヘッドブランチの自動削除」を有効化。アカウント: 二要素認証を有効化。