【问题标题】:Self-host remote git repository on Windows serverWindows 服务器上的自托管远程 git 存储库
【发布时间】:2013-09-18 13:15:39
【问题描述】:

我们在本地网络上有一台指定为“服务器”的计算机,它运行 Windows XP,我们在其中保存共享文件夹和应该对所有人可见的内容。

如何在其上创建远程 Git 存储库,并对其进行设置,以便本地网络上不同计算机上的不同人员可以拉/推?

我不在乎使用哪些协议 - http://、ssh://、file://、git:// 都可以。

【问题讨论】:

  • 设置共享驱动器。 Git 需要的只是一个可以写入文件的地方。 @user1562655 windows机器肯定不需要安装Git...
  • 所以没有实际的服务器? IE。每个 Git 实例只会写入共享文件,实际上只是将服务器用作文件服务器。如果多台客户端计算机尝试一次写入,冲突等会怎样?处理了吗? git:/ 这样的协议呢?

标签: windows git


【解决方案1】:

编辑:我最近发现了 Bonobo Git Server - 它是一个免费的开源 Git 服务器,适用于 Windows 和 IIS,获得 MIT 许可证。我自己还没有测试过,但是你可以试一试。

还有这篇 CodeProject 文章-Step by Step Setup Git Server on Windows with CopSSH + msysGit and Integrate Git with Visual Studio


旧答案:最后,我按照@meagar 的建议做了——我在服务器上创建了一个共享文件夹,然后我关注了this tutorial,关于使用 Git Gui 的部分。 注意,我们使用 pushd/popd 是因为 CD 不支持 UNC 路径:

pushd \\remote-pc\SharedDocs\MyRemoteGitRepo1
git init --bare
popd

现在您需要做的就是将本地存储库连接到远程存储库。 注意git remote add origin需要使用正斜杠,否则不起作用:

cd C:\Workspace\MyLocalGitRepo1
git remote add origin //remote-pc/SharedDocs/MyRemoteGitRepo1

最后你可以将你的工作推送到远程仓库:

git push origin master

【讨论】:

  • hm.. 我从来没有这样想过,但实际上,Windows 网络共享提供了基本的文件锁定。我的意思是,当文件打开供一个客户写入时,其他客户将被拒绝并不得不等待。 Git 的“裸”存储库是为基于文件系统的直接访问而设计的,如果它们不是为许多客户端并行访问而设计的,那就太奇怪了。它不一定要健壮,根目录下的单个“传统”锁定文件就足够了,所以如果没有工作我会感到非常惊讶! (而且我确信对这种使用的支持远比这更强大!:))
  • 是的,此外,根据我在互联网上的发现,在 Windows 上设置一个工作的 Git 服务器(实际服务器,使用git:/ 或ssh:/)是“不适合胆小的人” .
  • 仅供参考:我使用了一段时间的 msys,但后来我切换到“Git Extensions”包。它提供了一个 git 客户端、一个单独启动的 UI 或 Explorer 集成(所谓的 git-cheetah,类似乌龟)。用户界面比 msys 中的要好得多。 Core 和 Lookalike 是相同的,但它们比 msys 包更进一步。包还包含适用于所有 VisualStudio 版本的插件。并且还有“git bash”,它是简约的 Bash shell,非常有用,你不需要 cygwin/etc。全部免费,几乎一键安装。好的,也许点击 5 次。如果您安装了 KDiff3,可以轻松配置它以使用它。
  • 哦,如果我不清楚 - 它不会取代服务器。 Git 扩展是一个“用户”包,都是客户端,所以 Bonobo 在这里仍然有用。我只是建议您查看 GitExtensions。但是 - 由于它们在许多地方与 msys非常 相似(如果我没记错的话,它们甚至基于它),您可能需要事先卸载 msys,以确保没有任何冲突或混合其他..一旦我安装了它们(单独的 msys 包加上完整的 git-ex),这很令人困惑,因为所有的窗口都有相同的外观,但配置是分开的..
  • 我可以使用 Git Shell 和使用“驱动器号和分号”(例如 M:) 将 cd 之前的驱动器切换到 UNC 路径上的 repo 文件夹的技巧来简化此操作。然后 git init --bare 在 Git Shell 中。回到 C: 上的本地仓库并添加远程和推送。
猜你喜欢
  • 1970-01-01
  • 2016-12-16
  • 2015-11-16
  • 2013-03-19
  • 1970-01-01
  • 2011-08-27
  • 2021-04-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多