【Git】Gitリポジトリを複製する方法【Duplicate】【複製】
Gitリポジトリを複製する方法
概要
最近Dockerで開発環境を作り、その上にアプリを作ったりすることが増えたため、このDocker環境をコピーして使うことが増えてきました。
ただいざ久しぶりにGitにあげたDockerfileなどを複製するとなるとやり方がパッと分からなかったりするので、備忘録としてまとめておきます。
複製方法
ステップは4つです。
基本的な流れとしては
- コピー先となるリポジトリを作成する
- ローカルに--bareオプションを付けてコピー元のリポジトリをクローンする(ベアリポジトリの作成)
- クローンしたコピー元のリポジトリを--mirrorオプションを付けてコピー先のリポジトリにpushする
- クローンしたコピー元のリポジトリをローカルから削除
コピー先となるリポジトリを作成する
リポジトリの作成はGithubであれば画面右上のCreate Repositoryから新規に作成します。
ここではつい今日私自身がやったJavascript用のrepositoryとして作ったこちらにコピーすることを想定してみます。
ローカルに--bareオプションを付けてコピー元のリポジトリをクローンする(ベアリポジトリの作成)
ここではこちらのPython用のDocker環境を複製していきます。
まずはローカルの適当な場所に--bareオプションを付けてクローンします。
git clone --bare https://github.com/RYO0115/python_docker_env.git
クローンしたコピー元のリポジトリを--mirrorオプションを付けてコピー先のリポジトリにpushする
次にこのベアクローンを新しいコピー先のリポジトリにコピーしていきます。
まずはクローンしたリポジトリに移動。
cd python_docker_env
その後--mirrorオプションを付けてpushします。
git push --mirror https://github.com/RYO0115/js_docker_env.git
そもそも--bare, --mirrorは何をしているの?
--bare
こちらの記事を参考にさせていただきました。
平たく説明するとGitのリポジトリにはベアリポジトリとノンベアリポジトリの2種類が存在します。
これらの大きな違いはワーキングディレクトリと呼ばれる、所為我々が編集するソースコードなどの実態の有無になります。
ソースコードなどの実態がある方がノンベアリポジトリ、逆に更新管理の情報のみを含んだものがベアリポジトリとなります。
なので今回のようにただリポジトリを複製するだけであれば、更新管理情報のみがあれば十分なため、--bareオプションを付けていることになります。
--bareオプションを外した状態でも同じようにpushでき、履歴も含めて引き継がれているので、おそらくベアリポジトリにある更新管理情報のみで情報が十分と言うことで--bareオプションを付けているのだと思われます。(公式サイトでも--bareを推奨しているが、明確な説明はないので、自分はこのように理解しています)
--mirror
ミラーリングをするオプションです。
ブランチやタグ情報をまとめてコピーするオプションになります。
こちらをつけることでブランチ、タグ、プルリクエストの情報などをまとめてコピーすることができます。
最後に
以上でリポジトリの複製方法の紹介になります。
意外と使うのに忘れてしまいがちなので、こういった内容は適宜メモ書きとして投稿していきたいと思います。
また今回でベアリポジトリと言う存在を理解できたのも良かったです。
ではでは。