什么是" .git"在git URL中意味着什么?

时间:2011-12-31 06:16:55

标签: git

我在foo中设置了一个git repo

cd
mkdir foo
cd foo
git init

现在我想远程引用

git clone git+ssh://me@somemachine/home/me/foo.git

fatal: git remote error '/home/me/foo.git' does not appear to be a git repository

所以我把.git关闭然后就可以了。但是我看到的几乎所有例子最后都有“.git”。那“.git”是什么意思?

另外,ssh:// ...和git + ssh:// ...之间有什么区别(在意义和实际意义上)

4 个答案:

答案 0 :(得分:11)

那是什么" .git"意思?

git存储库文件夹末尾的

.git只是一种命名约定,通常意味着该文件夹是服务器而不是客户端。我相信它是由存储库裸露或不存在确定的(裸存储库没有工作目录)。克隆URL只指向一个文件夹,如果实际文件夹末尾有.git,则添加它。否则,不要。

另外,ssh:// ...和git + ssh:// ...之间的区别是什么(在意义和实际条款中)

实际上,他们几乎是一样的。在意义上,他们使用不同的协议连接到服务器。 ssh://打开与具有特定用户的服务器的SSH连接,并在服务器上运行git命令(通常服务器将通过将用户的shell设置为/usr/bin/git-shell来限制命令)。 git+ssh://表示服务器在本地运行git daemon,客户端需要首先打开SSH连接以与守护进程交互。

答案 1 :(得分:6)

这是一种常见的(但肯定不是通用的)约定,即在名称以.git结尾的目录中创建裸git存储库。这就是您经常在存储库URL末尾看到.git的原因。

我不确定git+ssh方案 - 实际上我在git手册页中找不到对它的引用。根据{{​​3}},协议已被删除,有利于普通的ssh。 (Eclipse论坛当然不是关于git的官方信息来源,但这是有道理的。我从来不知道应该是什么区别。)

答案 2 :(得分:2)

.git后缀只是表示所讨论的目录是一个裸git存储库(即没有工作副本的存储库)。实际上并不是必需的。

至于git+ssh://,根据the git-fetch manpage,不允许:

  

Git本身支持ssh,git,http,https,ftp,ftps和rsync协议。可以使用以下语法:

     
      
  • SSH:// [用户@] host.xz [:端口] /path/to/repo.git/
  •   
  • GIT中://host.xz [:端口] /path/to/repo.git/
  •   
  • HTTP [S]://host.xz [:端口] /path/to/repo.git/
  •   
  • FTP [S]://host.xz [:端口] /path/to/repo.git/
  •   
  • 的rsync://host.xz/path/to/repo.git/

         

    类似scp的语法也可以与ssh协议一起使用:>

  •   
  • [用户@] host.xz:路径/到/ repo.git /
  •   

答案 3 :(得分:1)

.git没有特殊含义,你需要添加它的天气取决于repo在服务器端的位置,有或没有.git。

有时候.git的回购意味着它是一个简单的回购。