gitHubのリポジトリのミラーコピーの話
あくまでgitHubの話
この記事に書かれているのは、あくまで、GitHubの話です。
GitLabとか、GitBucketとか、Azure DevOpsなどの
他のgitのリモートのサイトは、どうなのか知りません
自分のgitHubのリポジトリを丸ごと、コピペしたいときがある。
環境構築など終わった状況でpushしたリポジトリは、そのまま置いといて
リポジトリ自体を丸ごと、コピーして
コピーしたリポジトリをgit cloneしてnpm installだけやって、
続き何かしたい時とか。
途中まである程度、汎用的な設定や、共通項目の実装だけ終わらせた元のリポジトリ
をコピペして、
npm installだけして、追加実装をしてく
みたいなことを、大元の1つのリポジトリをベースに展開して、
作業を省略したいことがあった
gitにはリポジトリをフォークするという概念があるらしいが、
フォーク元と、フォーク先が、同じgitHubのアカウント内リポジトリとなる場合は、
フォークはできない仕様ならしい。
そのため、フォークはあきらめましたが、
ミラーコピーであれば、同じgitHubのアカウント内リポジトリであっても可能とのことでした。
そこで、このミラーコピーを使うことにしたのである
★★★★★★★★★★★★★★★★★★★★★★★★
過去に開発したプロダクトを丸ごとコピーして、
新しいプロダクトのための差分開発して仕上げる
ときなどでも、使えるのではないかと思っている
★★★★★★★★★★★★★★★★★★★★★★★★
具体的なやり方
WSL2(Ubuntu)のターミナルで作業している前提で書いてるが
別に、おそらく、Git Bashのターミナルでも同様のことはできるのではないかと思う。
/tmpなどの配下に一時的に捨てフォルダを作る
Linux環境だと/tmpは、1日だけで勝手に消される領域
/tmp/work001
とか適当なフォルダ作って、その中にcdコマンドで入った状況だとする
https://github.com/myUser/fromKankyo.git
をコピー元のリポジトリで、
https://github.com/myUser/toKankyo.git
がコピー先のリポジトリだとする
そしたら、
git clone --bare https://github.com/myUser/fromKankyo.git
cd fromKankyo.git
「--bare」を付けて「git clone」するのがポイント
そうすると、なぜか、「.git」までフォルダ名についたフォルダができる
( 「--bare」を付けない「git clone」だとフォルダ名に「.git」はつかないのであるが )
webブラウザでgitHubのサイトを表示して作業します。
GitHubにログイン
https://github.com
にログインします。
右上の「+」メニューをクリック →「New repository」を選択
リポジトリ情報を入力
Owner: は自分を選択
Repository name: toKankyo と入力 ( 今回の例では「toKankyo」だが、コピー先のリポジトリ名 )
Visibility: 「Private」か「Public」を選択 ( 用途に合わせて好きな方 )
Initialize this repository with:
README、.gitignore、License すべて未チェック(空の状態にする)
「Create repository」ボタンをクリック
上記をやって、空の状態の
https://github.com/myUser/toKankyo.git
のコピー先のリポジトリを作成する
上記で、空のコピー先のリポジトリができている前提で
先ほどの
/tmp/work001
にいるターミナルで続きのコマンドを実行する
git push --mirror https://github.com/myUser/toKankyo.git
「--mirror」をつけるのがポイントです。
ここまでできたら、
この
/tmp/work001
のwork001は、もう、要らないからフォルダごと削除でよい
Linuxの場合は、/tmpの配下は放置してたら、勝手に消えますので、そのまま放置でよい。
Webブラウザで、
https://github.com/myUser/toKankyo.git
のURLでコピー先のリポジトリににアクセスすると、
中身がコピーされている
ただし、過去のプルリクの内容は、コピーされていない
ブランチなどはコピーされている
defaultのブランチがmain以外になってしまってることがあるため、
その場合は、
リポジトリ → Settings → 画面内の “Default branch” セクション → Edit → main を選択 → Update
( 管理者権限が必要 )
にて、defaultのブランチをmainに更新する。
そこまでやったら、
自分が普段、開発作業をしているお好きなフォルダで、
git clone https://github.com/myUser/toKankyo.git
すれば、toKankyoフォルダができるでしょうから
cd toKankyo
で、中に入って、npm install などだけしとけば、
元の分からの続きできますので、
コピー先の
https://github.com/myUser/toKankyo.git
にpushや、プルリクを作成したり、いつも通りやればよろしいです
( そして、そうしても、コピー元のリポジトリは影響しません )
以上
Discussion