LoginSignup
16
18

More than 5 years have passed since last update.

[Git] リモートリポジトリのパスの書き方一覧

Posted at
git clone 'ここの書き方を毎回忘れる'

ので整理しておく。
リモートリポジトリのパスの書き方は大きく以下の6種類に分かれる。

  • Localプロトコル(1)
  • Localプロトコル(2)
  • HTTP(S)プロトコル
  • SSHプロトコル(1)
  • SSHプロトコル(2)
  • Gitプロトコル

Localプロトコル(1)

記法

  • 例: /path/to/repo.git/
  • 絶対パスのみ指定可能(~展開無し)
  • (NFSを含む)ファイルシステムからアクセスできるリポジトリのみ指定可能

特徴

  • Gitはハードリンクを行うか必要に応じて直接ファイルをコピーする(ので高速)

Localプロトコル(2)

記法

  • 例: file:///path/to/repo.git/
  • 絶対パスのみ指定可能(~展開無し)
  • (NFSを含む)ファイルシステムからアクセスできるリポジトリのみ指定可能

特徴

  • Gitはわざわざネットワーク越しにファイルを転送する(ので低速)
  • 他のバージョン管理システムからインポートしたときなどに現れる、関係のない参照やオブジェクトを除いた、クリーンなコピーが欲しいときに使う

HTTP(S)プロトコル

記法

  • 例: http[s]://example.com[:443]/path/to/repo.git/
  • ポート番号指定可能

特徴

  • GitはHTTP(S)を使ってファイルを転送する
  • HTTP(S)の認証機構を利用することもしないこともできる
  • 匿名のpullが可能
  • 認証を行った上でのpushが可能
  • HTTPSならば通信の暗号化が可能
  • Gitが最も推奨しているプロトコル

SSHプロトコル(1)

記法

  • 例: ssh://[user@]example.com[:22]/~/path/to/repo.git/
  • 絶対パスのみ指定可能(~展開あり)
  • ポート番号指定可能

特徴

  • GitはSSHを使ってファイルを転送する
  • SSHの認証機構を必ず利用する
  • 匿名のpullが不可能
  • 認証を行った上でのpushが可能
  • 通信の暗号化が可能

SSHプロトコル(2)

記法

  • 例1: [user@]example.com:path/to/repo.git/
  • 例2: [user@]example.com:/~/path/to/repo.git/
  • ホームディレクトリからの相対パスも絶対パスも指定可能(~展開あり)
  • ポート番号指定不可能

特徴

記法を除いてSSHプロトコル(1)と全く同じ

Gitプロトコル

記法

  • 例: git://example.com[:9418]/~/path/to/repo.git/
  • 絶対パスのみ指定可能(~展開あり)
  • ポート番号指定可能

特徴

  • GitはデフォルトではTCP/9418を用いる独自プロトコルでファイルを転送する
  • リモートリポジトリ側はGitデーモンを動かした上でプロジェクトごとにgit-export-daemon-okというファイルを作る必要がある
  • 認証機構が無いので実質read-only
  • 匿名のpullが可能
  • 認証を行った上でのpushが不可能
  • 通信の暗号化が不可能

まとめ

Local HTTP HTTPS SSH(1) SSH(2) Git
リモートアクセス $\color{lightgreen}{\rm △}$(要NFS) $\color{blue}{\rm ○}$ $\color{blue}{\rm ○}$ $\color{blue}{\rm ○}$ $\color{blue}{\rm ○}$ $\color{blue}{\rm ○}$
絶対パス $\color{blue}{\rm ○}$ N/A N/A $\color{blue}{\rm ○}$ $\color{blue}{\rm ○}$ $\color{blue}{\rm ○}$
ホームディレクトリからの相対パス $\color{red}{\rm ×}$ N/A N/A $\color{red}{\rm ×}$ $\color{blue}{\rm ○}$ $\color{red}{\rm ×}$
~展開 $\color{red}{\rm ×}$ N/A N/A $\color{blue}{\rm ○}$ $\color{blue}{\rm ○}$ $\color{blue}{\rm ○}$
ポート番号指定 N/A $\color{blue}{\rm ○}$ $\color{blue}{\rm ○}$ $\color{blue}{\rm ○}$ $\color{red}{\rm ×}$ $\color{blue}{\rm ○}$
匿名のpull N/A $\color{blue}{\rm ○}$ $\color{blue}{\rm ○}$ $\color{red}{\rm ×}$ $\color{red}{\rm ×}$ $\color{blue}{\rm ○}$
認証済のpush N/A $\color{blue}{\rm ○}$ $\color{blue}{\rm ○}$ $\color{blue}{\rm ○}$ $\color{blue}{\rm ○}$ $\color{red}{\rm ×}$
通信の暗号化 N/A $\color{red}{\rm ×}$ $\color{blue}{\rm ○}$ $\color{blue}{\rm ○}$ $\color{blue}{\rm ○}$ $\color{red}{\rm ×}$

参考リンク

16
18
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
16
18