建立本地git仓库

13

我喜欢使用GitHub作为我的项目文件库,但如果我能够在计算机上不同的目录路径上创建一个存储库,并在新的工作目录中克隆该创建的存储库,那就更有趣了。

我打算在本地创建一个GitHub。我已经搜索过很多关于这个问题的解决方案,其中很多人建议我使用gitolite等工具。但问题是,我使用的是Windows系统,我希望能够通过命令行完成所有操作。

我应该输入哪些命令来创建一个存储库,使其位于与工作目录不同的另一个目录中,并能够将该存储库克隆到本地网络中的其他终端上。


将终端连接到Windows主机

我已经创建了一个存储库目录路径为Users\username\GIT\project.git。我正在尝试使用命令行将终端连接到主机,命令为git clone file://{IPv4 server address}/Users/username/GIT/project.git返回

fatal: '/{IPv4 server address}/Users/username/GIT/project.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

我该如何解决这个问题?我的主机运行在Windows 7上,我的连接终端将使用Ubuntu 12.04 LTS和MacOS Mavericks。


更新记录

  1. 更新了我的问题内容。我不知道应该按哪些步骤进行操作。
  2. 添加了“将终端链接到Windows主机”的问题,以便在本地网络上共享仓库。

我建议您直接使用gitolite。您可能会遇到SSH密钥和权限方面的问题。 - Renato Zannon
@asifrc 如果服务器是Windows系统,这适用吗? - David B
1
不好笑,我本来想问的。是啊,在Windows上开发有时候很烦人(我正在折磨自己用Windows 8 :/)。我目前正在寻找Windows解决方案,找到了会告诉你 :) - asifrc
你有没有了解过 http://bonobogitserver.com/?它看起来很有前途..([github repo](https://github.com/jakubgarfield/Bonobo-Git-Server)) - asifrc
我更新了我的问题。很抱歉更改了问题的主体。我真的不知道如何实现这个步骤。 - David B
显示剩余6条评论
3个回答

15
也许你正在寻找创建git repo和本地克隆的简单方法?
  1. 使用git init --bare创建git repo
  2. 使用git clone --local /path/your/local/repo/从其他地方进行克隆

对于局域网,Windows共享或其他文件共享可能有效。

但是,这种简单方法只能工作,而不是最佳或最适合的方法。 GitHub上没有拉取请求、问题跟踪、特权控制等功能。 要管理git提交或其他复杂的工作,您需要一个管理系统, 如gitolite、gerrit,有些可能在Windows系统上无法使用。

如果只需要一个免费的私有repo,可以使用bitbucket。

从Windows共享中进行克隆:

git clone file:////{IPv4 server address}/share_name/path_to_your_.git_dir

在主机上,您必须使用“share_name”共享repo目录,例如:repo.git的父目录。
参见:
- 如何在Windows本地文件系统中克隆Git repo - 如何从局域网内的其他计算机在Windows中克隆Git repo - Windows Lan上的Git

准确无误。但是我无法像其他答案那样跟随您关于Windows共享的内容。无论如何,(我知道这可能看起来与主题无关)是否有一个基于本地的Bitbucket或GitHub用于Git管理(JIRA等)? - David B
看起来你对git不是很熟悉,所以我不建议你构建像JIRA这样的本地git管理系统。纯git可以创建本地仓库并在本地执行pull/commit/push操作,Windows共享(链接驱动器字母,例如g:\some\dir)与在你自己的计算机上一样工作。如果你学习更多关于git的知识,这将更容易做出选择。 - Fwolf
如果你对Git(特别是在Windows平台上)了解不多,管理本地Git仓库可能会在以后给你带来更多问题,因此现在使用在线私有Git服务可能是正确的选择。 - Fwolf

3
如果我正确理解了你的问题陈述,那么你可以使用克隆命令的--local开关将本地git repo克隆到另一个文件夹中,如下所示。
git clone --local /git/source_repo/project /home/username/workdir/project

位置

/git/source_repo/project 是存储库的安全副本(如果您愿意,可以称其为个人 GitHub)。

以及

/home/username/workdir/project 是您的工作文件夹。它可以是您想要频繁提交更改的任何文件夹。

解释开关:

--local

当要克隆的存储库在本地机器上时,此标志将绕过正常的“git感知”传输机制,并通过复制HEAD和对象和refs目录下的所有内容来克隆存储库。 .git / objects /目录下的文件在可能时使用硬链接来节省空间。

如果将存储库指定为本地路径(例如/ path / to / repo),则默认情况下为此,- local实际上是无操作的。如果将存储库指定为URL,则忽略此标志(并且我们从不使用本地优化)。如果给出/ path / to / repo,则指定--no-local将覆盖默认设置,使用常规git传输代替。

如果要强制复制而不是硬链接(如果您试图备份存储库,则可能是可取的),但仍要避免通常的“git感知”传输机制,可以使用--no-hardlinks。

- no-hardlinks /strong>

通过复制.git / objects目录下的文件来优化从本地文件系统上的存储库进行克隆的过程。

有关更多详细信息,请参见文档

更新1:

对于在Windows上设置Git服务器,您可以尝试名为 GitStack 的此商业(开源)软件。

有用的GitStack资源:

  1. GitStack 安装说明
  2. 指向 Github上的GitStack源代码 的链接

如果您在源和目标路径中都使用了完整路径,则执行命令的位置并不重要。我已经对上面的答案添加了更多描述。 - Litmus
好的。但是如何通过SSH或其他协议将我的终端连接到创建的代码库呢? - David B
哪些终端?你是指来自其他机器的吗?如果您想设置一个 git 服务器,最好使用非 Windows 平台。并不是说不能在 Windows 上完成,但是 Windowsgit 的支持几乎是事后想到的(请记住,Linus Torvalds 是 Git 和 Linux 的创造者)。不值得这样做。如果您仍然有兴趣,请搜索 msysgit访问此网站 - Litmus
有没有其他选项可以考虑?比如使用VirtualBox等。虚拟机可能会占用内存堆,从而在编码时降低计算机性能。 - David B
Vagrant默认使用VirtualBox(或vmware)以无头模式运行客户操作系统,因此需要相对较少的资源。 Bitnami堆栈也可作为准备好的VM映像使用。您可以考虑利用AWS免费层在亚马逊云上免费获取微实例。 - Litmus
显示剩余5条评论

1
要创建一个本地的裸仓库,命令实际上非常简单:
git clone --bare my_project my_project.git
Initialized empty Git repository in /my/projects/my_project.git/

只要您是本地使用(比如,使用USB存储设备),那就真的仅此而已。您只需将命令指向该存储库,以进行克隆、推送、拉取等操作。不过,有人可能会问为什么要这样做。
这些说明是用于在服务器上设置,但我发现这些说明对于创建本地存储库也非常有用:http://git-scm.com/book/en/Git-on-the-Server-Getting-Git-on-a-Server

太好了,把我的终端连接到创建的代码库怎么样? - David B
如果我理解正确的话,我需要在我的Windows GIT主机上设置/创建一个用户帐户,以匹配终端要使用的用户帐户?这样做是否仍然需要配置SSH才能正常工作(特别是在服务器端)? - David B
为了使这种方法工作,是的(就我了解的Git而言)。HTTP方法需要设置git-daemon,我想,在Windows上可能不可用。您可能还需要设置Cygwin。或者,您可以将存储库放在网络共享驱动器上,正如此源所建议的那样:http://elegantcode.com/2011/06/18/git-on-windows-creating-a-network-shared-central-repository/ - Greg Gauthier
让我们在聊天中继续这个讨论 - Greg Gauthier
我已经更新了我的问题,没有使用任何第三方软件。 - David B
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接