1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

git のリモートリポジトリを別の URL にリダイレクトして使う

Last updated at Posted at 2020-08-21

git のリモートリポジトリを別の URL にリダイレクトして使う

ユースケース

  • git プロトコルが禁止されている環境で https に読み替えて要求するようにしたいが、実行する git コマンド自体は変更したくない (できない) 場合
  • インターネットアクセスが遅い、あるいはインターネットに大量に要求を出したくない場合に、LAN 内のミラーを使いたい場合

※ 2つ目のユースケース場合は単に remote URL を複数併用することでも可能。

設定方法

git config --global url."gitコマンド内部用URL".insteadOf ユーザー用のURL
  • ダブルクォート(")も必要です。
  • 指定するURL は全部フルで指定しても、一部でもOK

覚え方

git config --global url."A".insteadOf B

url A insteadof B
→ (上記を英語の文章と考えて) gitコマンド視点で URL B の代わりに A を使う。

ユーザー視点では B のほうを使います。

git clone B とすると実際には A にアクセスします。

具体例 (URL の全部を置換する場合)

git://git.yoctoproject.org/poky のたぶん私的なミラーのひとつで https://github.com/lgirdk/poky.git を使います。(google で最初に見つかったもの)

本家に直接アクセス

本家に直接アクセスする場合は以下のような感じです。

$ git clone git://git.yoctoproject.org/poky
Cloning into 'poky'...
remote: Enumerating objects: 483545, done.
remote: Counting objects: 100% (483545/483545), done.
remote: Compressing objects: 100% (114242/114242), done.
remote: Total 483545 (delta 361934), reused 483108 (delta 361625)
Receiving objects: 100% (483545/483545), 166.03 MiB | 15.71 MiB/s, done.
Resolving deltas: 100% (361934/361934), done.

insteadOf の設定

$ git config --global url."https://github.com/lgirdk/poky.git".insteadOf git://git.yoctoproject.org/poky

上記コマンドを実行すると ~/.gitconfig に以下が追加されます。

[url "https://github.com/lgirdk/poky.git"]
        insteadOf = git://git.yoctoproject.org/poky

insteadOf の設定後に、本家にアクセスしてるつもりでリダイレクト先にアクセスする

$ git clone git://git.yoctoproject.org/poky
Cloning into 'poky'...
remote: Enumerating objects: 8909, done.
remote: Counting objects: 100% (8909/8909), done.
remote: Compressing objects: 100% (1274/1274), done.
remote: Total 483972 (delta 7996), reused 8310 (delta 7618), pack-reused 475063
Receiving objects: 100% (483972/483972), 160.07 MiB | 15.77 MiB/s, done.
Resolving deltas: 100% (362350/362350), done.

こちらでは、最初の clone の結果より、Enumerating objects のところの数字が少ないことを確認できます。

ミラーに直接アクセス

以下と同じことを確認できます。

$ git clone https://github.com/lgirdk/poky.git
Cloning into 'poky'...
remote: Enumerating objects: 8909, done.
remote: Counting objects: 100% (8909/8909), done.
remote: Compressing objects: 100% (1274/1274), done.
remote: Total 483972 (delta 7996), reused 8310 (delta 7618), pack-reused 475063
Receiving objects: 100% (483972/483972), 160.07 MiB | 18.84 MiB/s, done.
Resolving deltas: 100% (362350/362350), done.

具体例 (URL の一部を置換する場合)

git://git.yoctoproject.org/poky の正式なミラーは https://git.yoctoproject.org/git/poky です。
https://git.yoctoproject.org/git の部分と git://git.yoctoproject.org の部分が共通しています。

$ git config --global url."https://git.yoctoproject.org/git".instead git://git.yoctoproject.org

~/.gitconfig に以下が足されます。

[url "https://git.yoctoproject.org/git"]
        instead = git://git.yoctoproject.org

以下のようになります。

$ git clone git://git.yoctoproject.org/poky
Cloning into 'poky'...
remote: Enumerating objects: 483596, done.
remote: Counting objects: 100% (483596/483596), done.
remote: Compressing objects: 100% (114250/114250), done.
remote: Total 483596 (delta 361977), reused 483179 (delta 361666)
Receiving objects: 100% (483596/483596), 166.06 MiB | 16.86 MiB/s, done.
Resolving deltas: 100% (361977/361977), done.

参考 URL

https://git-scm.com/docs/git-configurl.<base>.insteadOf
https://yu8mada.com/2018/10/31/how-to-treat-an-url-specified-in-https-as-one-for-ssh-when-cloning-a-repository-in-github/
https://kakakakakku.hatenablog.com/entry/2020/03/27/093150

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?