Linux 上的 Git Daemon?

Linux 上的 Git Daemon?

尝试在 Linux 服务器上设置一个简单的 git-daemon,并通过 Windows 机器与其通信。

在Linux服务器上:

  1. 创建文件夹/主页/foo/bar
  2. 光盘/主页/foo/bar
  3. 做一个git --bare init这里
  4. 做一个touch git-daemon-export-ok
  5. 光盘/主页/foo
  6. 运行命令git-daemon --verbose --reuseaddr --base-path=/home/foo --enable=receive-pack

在 Windows 客户端上使用 Tortoise Git

  1. git.exe 克隆 --progress -v "git://servername/bar" "C:\source\myFolderName"(作品)
  2. 创建文件 a.txt,将其添加到 git,然后提交(有效)
  3. 做一个git.exe 拉取“origin” master然后得到致命错误:无法找到远程参考主机(有道理,主人还没到)
  4. 做一个git.exe 推送“原点” master:master乌龟永远挂在那里什么也不做

我知道为什么我无法从远程分支上的 master 拉取。但是为什么我不能将我的第一个提交推送到远程存储库?#4 确实应该有效。尝试使用 tortoise 和 mysysgit 命令行,这两种情况我都挂了。我错过了什么?服务器没有有用的日志

答案1

不幸的是这可能是 msysgit 中的一个错误http://code.google.com/p/msysgit/issues/detail?id=457

截至目前,有一个解决方法(我认为不在主分支中)但没有真正的解决方案。

答案2

我倾向于使用以下方式从我的服务器访问存储库的读/写功能:

git remote add [email protected]:/repository

这是通过 ssh 而不是通过 git 守护进程进行的 git。您可以使用此配置user@server来访问存储库。

您还可以利用此功能做其他一些事情:

  • 创建一个名为 git 的用户,并赋予其 shell 权限/usr/bin/git-shell。如果执行此操作,该用户将只能执行 git 操作 - ssh 将不起作用。
  • 创建一个/home/git/.ssh/authorized_keys包含可以连接的 ssh 密钥的文件。此处添加的任何密钥都允许您提交,因此您可以添加多个不同用户的密钥。

此设置让您可以控制谁可以提交,同时允许任何人通过高效的 git:// 协议进行克隆。

但是,如果您确实想接收包裹,我认为正确的命令是:

git-daemon --verbose --reuseaddr --export-all --base-path=/home/foo --enable=receive-pack

按照这个堆栈溢出帖子

相关内容