在Windows中托管Git存储库

Jef*_*itz 107 windows git

目前有办法在Windows中托管共享Git存储库吗?我知道您可以在Linux中配置Git服务:

git daemon
Run Code Online (Sandbox Code Playgroud)

是否有本机Windows选项,缺少共享文件夹,以托管Git服务?

编辑:我目前正在使用gg的cygwin安装来存储和使用Windows中的git存储库,但我想采取下一步托管存储库,其中包含可以提供对其他人的访问权限的服务.

Der*_*eer 74

以下是在Windows下运行git守护程序时可以遵循的一些步骤:

(先决条件:默认的Cygwin安装和支持git守护程序的git客户端)

第1步:打开一个bash shell

步骤2:在目录/ cygdrive/c/cygwin64/usr/local/bin /中,创建一个名为"gitd"的文件,其中包含以下内容:

#!/bin/bash

/usr/bin/git daemon --reuseaddr --base-path=/git --export-all --verbose --enable=receive-pack
Run Code Online (Sandbox Code Playgroud)

步骤3:从提升的提示符(即作为管理员)运行以下cygrunsrv命令以将脚本作为服务安装(注意:假设Cygwin安装在C:\ cygwin64):

cygrunsrv   --install gitd                          \
            --path c:/cygwin64/bin/bash.exe         \
            --args c:/cygwin64/usr/local/bin/gitd   \
            --desc "Git Daemon"                     \
            --neverexits                            \
            --shutdown
Run Code Online (Sandbox Code Playgroud)

步骤4:运行以下命令以启动服务:

cygrunsrv --start gitd

你完成了.如果你想测试它,这里有一个快速而又脏的脚本,它表明你可以将git协议推送到你的本地机器:

#!/bin/bash

echo "Creating main git repo ..."
mkdir -p /git/testapp.git
cd /git/testapp.git
git init --bare
touch git-daemon-export-ok
echo "Creating local repo ..."
cd
mkdir testapp
cd testapp
git init
echo "Creating test file ..."
touch testfile
git add -A
git commit -m 'Test message'
echo "Pushing master to main repo ..."
git push git://localhost/testapp.git master
Run Code Online (Sandbox Code Playgroud)

  • 我从未将Cygwin解决方案视为"在Windows中工作".这就像说"在VM中运行Linux正在Windows中运行".但这只是我的纯粹观点;) (26认同)
  • 快速说明:/ usr/bin对我没有用,但放入/ bin工作(并在cygrunsrv中使用c:/ cygwin/bin/gitd).不知道我的cygwin安装的年龄有多大,但看起来/ usr/bin是一个链接到/ bin中的什么,windows不知道...还有点明显,但记得在c:/ cygwin /中创建文件夹/ git (3认同)
  • @Rook - 相反,Cygwin工具套件与您可能安装的任何其他第三方应用程序没有什么不同.Cygwin不是一个虚拟机,而是一个预先打包的工具套件.它只是一组Windows可执行文件和dll,就像您机器上的其他所有内容一样. (3认同)
  • 如果我可以编辑这篇文章,我会添加以下内容:先决条件:安装了git和cygrunsrv软件包的cygwin. (2认同)
  • 另一个注意事项:完全限定gitd shell脚本中git的路径.在我的一台机器上,当作为Windows进程执行时,MSYSGit正在启动而不是cygwin-git.MSYSGit不支持守护程序模式,因此服务无法启动. (2认同)

poi*_*rez 16

GitStack可能是您的最佳选择.在撰写本文时,它目前是免费的(最多2个用户)和开源.

  • 看起来仅限于开源或学生项目:"GitStack对于开源和学生项目是免费的!" (2认同)

Dan*_*l O 12

这是Windows专用的git服务器:https://github.com/jakubgarfield/Bonobo-Git-Server/wiki

  • 快乐的倭黑猩猩用户在这里.我相信安德烈和皮尔斯的担忧现在应该得到解决.TeamCity问题被标记为已关闭,我在使用中央集中式存储库方面没有遇到任何问题. (3认同)

Dav*_*rno 9

如果您在Windows环境中工作,您是否考虑过Mercurial?它是一个像Git这样的分布式版本控制系统,但与Windows整合得更加简洁.

  • 确实,在Windows机器上使用Mercurial要容易得多,至少就能够同步存储库而言.如果你真的必须使用Git,这不是一个非常有用的答案! (9认同)

小智 7

如果cygrunsrv: Error starting a service: QueryServiceStatus: Win32 error 1062: The service has not been started.在运行命令后出现错误:

cygrunsrv --start gitd
Run Code Online (Sandbox Code Playgroud)

这意味着您没有创建'base-path'文件夹.

创建文件夹'/ git'并重新运行该命令将解决此问题.


Ale*_*sev 7

安装CygWin是一种矫枉过正,请阅读本教程,了解如何更快地和本机化:

http://code.google.com/p/tortoisegit/wiki/HOWTO_CentralServerWindowsXP

  • 我参加聚会迟到了,但此链接现在重定向到 https://tortoisegit.org/,其中讨论了有关客户端的所有内容。我找不到任何有关在那里运行服务器的信息。 (2认同)

Mat*_*ugh 5

我目前正在Windows上使用cygwin的ssh守护进程来提供服务并允许远程访问我的仓库.它工作得很好,我可以完全控制谁通过他们的ssh证书访问我的repo,并且即使在远程WAN和VPN链接上,性能也会激活.

另一个解决方案是使用Gitosis.它是一个使托管存储更容易的工具.