Git服务:我想这么简单


139

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

git serve 

然后在Linux盒子上简单地执行以下操作:

git clone http://project project 

完成。


您是否知道克隆svn仓库的git-svn克隆很棘手?subtlegradient.com/articles/2008/04/22/cloning-a-git-svn-clone
bendin

为什么不直接将svn安装在您的linux笔记本广告中,以便从项目存储库中签出呢?Git可能是新的热点,但实际上,在这种特殊情况下,您似乎使生活变得不必要地复杂。
bentin

bentin不,我不知道这很棘手,因为我正在设置环境,现在我很高兴你能说出来……
Setori

1
首先:我的笔记本不允许进入此vpn,因此我无法直接访问svn。其次:我想提交到我自己的存储库,使用git的全部目的是可以进行本地提交,分支和轻松合并。我发现现在使用svn相当局促。
Setori

如果您安装了python,那么git instaweb -d python可能很简单(使用Git 2.21,2019年2月):请参阅下面的答案
VonC

Answers:


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

3
您可以按照以下说明将命令作为别名添加到.gitconfig文件中:git.or.cz/gitwiki/Aliases#Serverepoonthespot
RFelix


8
我认为必须注意,尽管git daemon允许其他git客户端进行远程访问,但它缺少hg serve提供的Web界面。
罗伯·肯尼迪

4
在您的.gitrc中提供别名,例如:serve = !git daemon --reuseaddr --verbose --base-path=. --export-all ./.git
dlamblin 2011年

1
@ Aeon,URL似乎已更改,现在为git.wiki.kernel.org/articles/a/l/i/Aliases.html
Christophe Muller


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守护程序进行共享的详细教程:http : //l.rw.rw/git-daemon


12

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

git-instaweb

$ git instaweb -d apache2 --start
$ lynx localhost:1234

它说lighttpd not found. Install lighttpd or use --httpd to specify another httpd daemon.
Rakib

4
@syedrakib您需要安装lighttpd或apache2或其他工具。我个人使用git instaweb -d webrick的OS X,因为使用WEBrick配备了红宝石,这是在OS X上预装
马亭Heemels

6
该工具似乎与Windows不兼容。由于张贴者要求使用Windows工具,因此这是答案的重要因素。
罗伯特·麦克莱恩

9

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

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

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

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

PS:使用git守护程序解决方案时,您可以设置--base-path=.git网址为git://HOST/


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/

我只是盲目的尝试。我可以git clone但不能访问webgui。看来浏览器正在等待服务器的响应。
2015年

0

在.git / config中添加以下行

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

然后执行

git instaweb

0

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

参见Arti Zirk()的commit 2eb14bb(2019年1月28日(通过合并JUNIOÇ滨野- -提交abf39e3,2019年2月5日)artizirk
gitster

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

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

git-instaweb会在http.server(中GIT_DIR/gitweb/)周围生成一个小的包装程序,以解决CGI处理程序的局限性,在这种情况下,CGI脚本必须位于cgi-bin子目录中,并且无法轻松更改目录索引。为了使实现保持较小,gitweb它在url上运行,/cgi-bin/gitweb.cgi并且在打开时会自动重定向/

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

默认情况下,Python安装在大多数现代Linux发行版中,从而git instaweb -d python无需其他任何功能即可运行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.