| LICENSE | Initial commit | |
| README.md | README.md を更新 | |
mirror_control
GitHubとCodebergの相互ミラー方法 「相互ミラー」は両方向同期を意味しますが、実際には片方を正とする一方向ミラーを2つ設定する形が現実的です。真の双方向同期はコンフリクトが起きやすく推奨されません。
構成パターン GitHubを正とする場合(最も一般的) GitHubにプッシュ → Codebergに自動ミラー これはCodebergの機能で対応できます。
設定手順 CodebergへのミラーをGitHub Actionsで行う
GitHubリポジトリの Settings → Secrets に以下を追加
CODEBERG_TOKEN(CodebergのアクセストークンをCodeberg設定画面で発行)
GitHubリポジトリに .github/workflows/mirror.yml を作成し、pushのたびにCodebergへforce pushするワークフローを設定
CodebergのPull Mirror機能を使う(より簡単)
Codebergでリポジトリを作成 Settings → Repository → Mirror Settings 「Pull from URL」にGitHubのリポジトリURLを入力 GitHubのアクセストークンも入力(プライベートリポジトリの場合) 同期間隔を設定(最短8時間ごと)
注意点
Codebergの無料プランではPull Mirrorは8時間間隔が最短です GitHub ActionsはGitHub側の変更をリアルタイムでCodebergへ反映できるため、即時性が必要なら組み合わせが有効です 双方向で別々に編集するとコンフリクトが発生します。どちらか一方で作業することを強く推奨します
どちらを「正」のリポジトリにするか決めてから設定するのがスムーズです。Codebergが正。GitHubからPullもPushもできてほしいけどPullは毎週1回とかでいい GitHubにしかないリポジトリをforkして定期的にアップストリームマージするぐらいしか使わない。一部ローカルでもよし ステップバイステップでやり方を教えて23:535 / 5件構成の整理
Codeberg = 正(メインで作業) GitHub = 読み書きできるミラー(週1同期でOK) 用途:GitHubにしかないリポジトリをforkしてアップストリームマージ、たまにローカル作業
ステップバイステップ Step 1:CodebergのアクセストークンとGitHubの設定 Codeberg側
Codeberg → Settings → Applications → Generate Token 権限は repository にチェック トークンをコピーして安全な場所に保存
GitHub側
GitHub → Settings → Developer settings → Personal access tokens → Generate new token (classic) 権限は repo にチェック 同様にトークンを保存
Step 2:GitHubにミラーリポジトリを作成
GitHubで新しいリポジトリを作成(Codebergと同名が管理しやすい) 空のままにしておく(READMEも追加しない)
Step 3:CodebergからGitHubへのPush Mirror設定
Codebergのリポジトリ → Settings → Repository 「Mirror Settings」または「Push Mirrors」セクションを探す 以下を入力:
URL: https://<GitHubユーザー名>:<GitHubトークン>@github.com/<ユーザー名>/<リポジトリ名>.git Sync when commits are pushed: チェックON(Codebergにpushするたびに自動でGitHubにも反映)
保存
これでCodeberg → GitHubへの自動Push Mirrorが完成です。
Step 4:ローカルのリモート設定 ローカルで両方にアクセスできるよう、リモートを2つ登録します。 ターミナルで:
origin = Codeberg(メイン) github = GitHub(サブ)
として登録しておくと、
普段は git push origin でCodebergへ → Step3のPush Mirrorが自動でGitHubにも反映 GitHubのforkからマージするときは git fetch github で取得可能
Step 5:GitHubにしかないリポジトリのfork&定期マージ
GitHubでアップストリームのリポジトリをFork そのForkをCodebergへClone(またはローカルへClone) upstream としてGitHubの元リポジトリを登録 週1など好きなタイミングで:
git fetch upstream git merge upstream/main git push origin(Codebergへ → 自動でGitHubミラーにも反映)
Step 6(任意):週1の自動同期をGitHub Actionsで もし完全自動化したい場合は、GitHubのforkリポジトリにGitHub Actionsを設定して:
週1スケジュール(cron)でupstreamをfetch&merge CodebergへPush
という形も可能です。ただし手動でも十分な用途なら不要です。
まとめ図 Codeberg(正) ↓ Push Mirror(自動) GitHub
ローカル / GitHub fork ↓ fetch upstream → merge → push origin Codeberg(正)→ 自動でGitHubにも反映 まずStep 1〜3を済ませると、基本的な流れが動き始めます。不明な点があれば気軽に聞いてください。