Content-Length: 91916 | pFad | https://ryo-udon.hatenadiary.jp/entry/2024/08/17/151749

Gitリポジトリの複製方法 - うどん県出身グーナーの呟き

うどん県出身グーナーの呟き

神奈川県在住のグーナーです。プログラムをやっているので勉強していることや作った便利ツールを公開したいと思います。

【Git】Gitリポジトリを複製する方法【Duplicate】【複製】

Gitリポジトリを複製する方法

概要

最近Dockerで開発環境を作り、その上にアプリを作ったりすることが増えたため、このDocker環境をコピーして使うことが増えてきました。

ただいざ久しぶりにGitにあげたDockerfileなどを複製するとなるとやり方がパッと分からなかったりするので、備忘録としてまとめておきます。

複製方法

ステップは4つです。

基本的な流れとしては

  1. コピー先となるリポジトリを作成する
  2. ローカルに--bareオプションを付けてコピー元のリポジトリをクローンする(ベアリポジトリの作成)
  3. クローンしたコピー元のリポジトリを--mirrorオプションを付けてコピー先のリポジトリにpushする
  4. クローンしたコピー元のリポジトリをローカルから削除

コピー先となるリポジトリを作成する

リポジトリの作成はGithubであれば画面右上のCreate Repositoryから新規に作成します。

ここではつい今日私自身がやったJavascript用のrepositoryとして作ったこちらにコピーすることを想定してみます。

github.com

ローカルに--bareオプションを付けてコピー元のリポジトリをクローンする(ベアリポジトリの作成)

ここではこちらPython用のDocker環境を複製していきます。

github.com

まずはローカルの適当な場所に--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

こちらの記事を参考にさせていただきました。

www.nekotricolor.com

www.nekotricolor.com

qiita.com

平たく説明するとGitのリポジトリにはベアリポジトリとノンベアリポジトリの2種類が存在します。

これらの大きな違いはワーキングディレクトリと呼ばれる、所為我々が編集するソースコードなどの実態の有無になります。

ソースコードなどの実態がある方がノンベアリポジトリ、逆に更新管理の情報のみを含んだものがベアリポジトリとなります。

なので今回のようにただリポジトリを複製するだけであれば、更新管理情報のみがあれば十分なため、--bareオプションを付けていることになります。

--bareオプションを外した状態でも同じようにpushでき、履歴も含めて引き継がれているので、おそらくベアリポジトリにある更新管理情報のみで情報が十分と言うことで--bareオプションを付けているのだと思われます。(公式サイトでも--bareを推奨しているが、明確な説明はないので、自分はこのように理解しています)

--mirror

ミラーリングをするオプションです。

ブランチやタグ情報をまとめてコピーするオプションになります。

こちらをつけることでブランチ、タグ、プルリクエストの情報などをまとめてコピーすることができます。

最後に

以上でリポジトリの複製方法の紹介になります。

意外と使うのに忘れてしまいがちなので、こういった内容は適宜メモ書きとして投稿していきたいと思います。

また今回でベアリポジトリと言う存在を理解できたのも良かったです。

ではでは。

/*コードブロックに言語名を表示*/ pre.code:before { content: attr(data-lang); display: inline-block; background: white; color: #666; padding: 3px; position: absolute; margin-left: -10px; margin-top: -30px; } pre.code { padding-top: 30px !important; }








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: https://ryo-udon.hatenadiary.jp/entry/2024/08/17/151749

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy