Help us understand the problem. What is going on with this article?

git プロトコルのかわりに ssh で git レポジトリを clone したいとき

More than 5 years have passed since last update.

ネタ元: githubでhttpsのURLを指定してもgitプロトコルやssh経由にする方法 - @znz blog

ssh プロトコルでアクセスできるけれど,git プロトコルで (外から) アクセスできない環境があるとします。
そのような環境のレポジトリ,ふつうに ssh プロトコルで clone すればいいんですが,submodule をつかっていていてその submodule のレポジトリ URL が git プロトコルだったりすると,外の環境では submodule update ができなくて困ったりします。

そんなときは, git の URL insteadOf 機能を使って URL を書き換えてやると,(内側での環境と同じように) clone できます。

やりたいことは,

  • git://git.example.org/project.git という URL を
  • git@git.example.org:project.git という URL に

書き換えたい。
(後者は SCP 形式ですが,git は ssh://git@git.example.org/project.git のような URL 形式も使うことができます。今回は SCP 形式で話をすすめます)

このとき,シェルから以下のようにして git の global config を設定します。

$ git config --global url.'git@git.example.org:'.insteadOf git://git.example.org/

置き換え後の git@git.example.org: の「:」を付与するのを忘れないようにしてください。
(この点では ssh URL 形式を使ったほうが,見た目はいいかもしれませんね)

このように実行することで, ~/.gitconfig の内容に以下の内容が追加されます。

[url "git@git.example.org:"]
        insteadOf = git://git.example.org/

ポイントは

  • URL 置換はプロトコル部分だけではなく,より長い部分を指定できる
    • だから今回のようにドメイン単位で置換対象を絞り込むことができる
      • --global 指定しても安心
      • より深く,プロジェクトパス単位で置換対象を絞り込むこともできる (はず)
    • 今回は同じサーバを指定しているが,違うサーバにむけることもできる (はず)
  • 単純に置換するだけなので,もちろん逆に ssh URL を git URL に置換したり https:// に置換したりもできる
  • URL 置換は最長一致したものが使われるので,複数指定しても大丈夫
  • push の際だけ置換をおこなう pushInsteadOf もある
    • ネタ元サイトや git help config を参照してください。
dayflower
今後ははてダ https://dayflower.hatenablog.com/ に戻ろうと思います。 いままでありがとうございました。
https://dayflower.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした