web-dev-qa-db-ja.com

一部のリポジトリURLが.gitで終わるのに、そうでないものがあるのはなぜですか?

リポジトリのクローンを作成するとき、これら2つのURLに違いはありますか?

  1. .git拡張子なし:

    git clone http://foo/repo
    
  2. .git拡張子付き:

    git clone http://foo/repo.git
    
41
user496949

慣例では、。git拡張子はベアリポジトリに使用し、作業ツリーのあるディレクトリは省略します。 Gitは実際には気にしませんが、これをかなり透過的にする便利な方法がいくつかあります。

たとえば、/tmp/foo.gitという名前のリポジトリがあり、git clone file:///tmp/fooを呼び出すと、Gitは最初に/ tmp/fooを見つけようとします。存在しない場合は、代わりに/ tmp/foo.gitを試行します。

これはnotは逆に機能しません。ディレクトリの名前が/ tmp/fooで、/ tmp/foo.gitからクローンを作成しようとすると、次のように通知されます。

致命的: '/ tmp/foo.git'はgitリポジトリではないようです

HTTP/HTTPS機能のほとんどは、GitではなくWebサーバーからのものです。 スマートHTTPトランスポート を使用している場合でも、ほとんどの魔法はサーバー側のLocationMatchディレクティブで発生すると思います。理論はさておき、GitHubに対するいくつかの簡単なテストでは、その点でSSHおよびGitプロコトールと同じように機能することが示されていますが、他のWebサーバーではマイレージが異なる場合があります。

39
Todd A. Jacobs