139

我想知道如何简单地通过 http = 发布,就像Mercurial的 hg 服务!在 Windows/work 框中执行以下操作:

git serve 

然后在 Linux 盒子上简单地去:

git clone http://project project 

完成的。

4

8 回答 8

197

导航到您的项目并使用以下开关启动 git-daemon:

cd project
git daemon --reuseaddr --base-path=. --export-all --verbose

这告诉 git-daemon 提供当前目录中的所有项目(我假设是包含 .git/ 文件夹的项目目录)。如果您将其关闭并重新启动过快,它还会告诉它重新使用相同的地址。

您可以将其放入批处理脚本中,并使用易于记忆的名称(例如“gitserve”),因此您无需再次全部输入。正如一些评论中所建议的,在最新版本的 Git 中,您可以为 Git 配置添加别名

[alias]
    serve = !git daemon --reuseaddr --verbose --base-path=. --export-all ./.git

在服务器(您的 Windows 机器)上完成此操作后,您可以执行以下操作:

git serve

git-daemon 使用 git:// 协议进行传输,因此在客户端(您的 Linux 机器)上,您需要执行以下操作:

git clone git://123.456.789.111/ project
于 2008-12-18T09:07:40.253 回答
14

与其编写自己的批处理脚本,不如使用gitjour。它知道如何正确启动 git 守护进程,并将通过 mDNS 广播克隆 URL,因此您可以gitjour show在 linux 机器上进行复制和粘贴。

还有一篇很好的文章,概述了 gitjour 和 Nic 博士的许多其他类似工具,什么是 *jour 以及为什么它们是 RailsCamp08 的杀手级应用程序

于 2008-12-19T01:14:58.193 回答
13

目前使用两个别名 - serve 和 hub。服务于只读共享和集线器用于读/写共享:

[alias]
  serve = !git daemon --base-path=. --export-all --reuseaddr --informative-errors --verbose
  hub = !git daemon --base-path=. --export-all --enable=receive-pack --reuseaddr --informative-errors --verbose

此外,还有更详细的关于通过 git daemon 共享的教程:http: //l.rw.rw/git-daemon

于 2013-09-20T05:55:31.913 回答
12

如果您只想使用 Web 浏览器公开存储库

git-instaweb

$ git instaweb -d apache2 --start
$ lynx localhost:1234
于 2011-03-15T00:06:47.683 回答
9

这是另一种方法。您将需要安装 python。

  • git update-server-info
  • 转到.git目录
  • python -mSimpleHTTPServer

(只需在您的 gitconfig 中创建一个别名)

现在您可以使用git pull http://HOST_NAME:8000/

PS:当使用 git daemon 解决方案时,您可以设置--base-path=.git这样的 urlgit://HOST/

于 2012-01-29T20:53:48.763 回答
0

git-webui 是一个 git 扩展,它提供了一个基于 Web 的用户界面以及从其他计算机克隆/拉取的能力

https://github.com/alberthier/git-webui

$ cd my_git_repo
$ git webui

其他人可以

$ git clone http://<ip-of-your-computer>:8000/ repoclone

或者

$ git pull http://<ip-of-your-computer>:8000/
于 2014-09-23T13:23:09.757 回答
0

在 .git/config 中添加以下行

[instaweb]
               local = true
               httpd = webrick
               port = 4231

然后执行

git instaweb
于 2018-01-03T13:42:37.553 回答
0

Git 2.21(2019 年 2 月)允许您将 python 和git instaweb

请参阅Arti Zirk ( ) 的提交 2eb14bb(2019 年 1 月 28 日(由Junio C Hamano 合并 -- --提交 abf39e3中,2019 年 2 月 5 日)artizirk
gitster

git-instaweb: 添加 Python 内置http.server支持

使用此补丁,可以通过选项git-instaweb使用 Python http.serverCGI 处理程序启动。-d python

git-instawebhttp.server在(in )周围生成一个小包装器GIT_DIR/gitweb/,解决 CGI 处理程序的限制,其中 CGI 脚本必须位于cgi-bin子目录中并且目录索引不能轻易更改。为了使实现保持较小,gitweb在 url 上运行,/cgi-bin/gitweb.cgi并且在打开时自动重定向/

生成的包装器与 Python 2 和 3 兼容。

Python 默认安装在大多数现代 Linux 发行版上,git instaweb -d python无需其他任何东西即可运行。

于 2019-03-03T17:33:59.760 回答