在本地机器上设置Git代码库

17

我如何在本地系统上设置一个Git仓库?(我使用的是Windows操作系统)

以下是我想要实现的设置:(所有内容都在我的本地机器上)

  • 主机文件夹(充当中央仓库)
  • 客户端文件夹

我想在客户端文件夹中完成所有开发工作。完成后,我希望将其推送到主机文件夹。


以下是我所做的:(使用Windows上的Git Bash)

  • cd d:/adinsert
  • mkdir host
    • cd host
    • git init

cd c:/

  • mkdir client
    • cd client
    • git init
    • git remote add origin d:/host //在客户端文件夹中添加一些文件,并提交它们
    • git push origin master

当我将文件推送到origin时,Git会抛出许多远程错误。但是,当我让我的主机成为一个裸体的Git时,它可以成功推送。

我不理解常规Git和裸体Git之间的区别。从手册中,我了解到裸体Git用于存储增量,以及当您不想存储原始文件时使用。但是,我想将文件存储在主机上。我该怎么做?

3个回答

15

“普通Git”和“裸Git”之间的区别在于,裸存储库没有工作目录。您不应该将提交推送到普通的Git存储库中,因为您可能会遇到难以恢复的问题。请始终将提交推送到裸存储库中。

如果您想要一个“主机”,其中显示文件的副本,请设置第三个存储库,从主机存储库克隆。每当您想要更新主机文件时:

  • 从您的工作目录使用git push命令更新主存储库
  • 从您的主机目录使用git pull命令从源拉取

您甚至可以在裸存储库上设置一个提交后挂钩(post-commit hook)以自动执行第二个步骤。


这是我的设置:我有两个硬盘,其中一个用于备份。我来自Subversion背景,其中主文件始终存在于服务器上。我想在git中做类似的事情,即在主机上创建一个git存储库,将文件添加到其中,将这些文件拉到我的客户端文件夹中,进行更改并将新更新的文件上传回主机。这可能吗? - brainydexter
2
我本质上想做的是类似于git-hub的事情,你可以克隆存储库,在本地计算机上进行更改,然后将其上传回git-hub(在我的情况下,不是git-hub,而是另一个文件夹)。 - brainydexter
2
@brainydexter:当然可以,只需创建两个存储库,一个用于您的工作副本,另一个用于您的“主”副本(您可以将其视为Subversion术语中的“服务器”)。主副本将是一个裸存储库,因此您可以将内容推送到其中。 - Greg Hewgill
这个答案对我在实现/接近所需的git-hub行为方面非常有帮助。 - John Bananas

3
在你的客户端目录中,你会注意到一个.git目录。裸版本基本上只是那个.git目录内容而没有工作副本。
最容易的方法是克隆它(而不是尝试设置另一个仓库):
从c:/调用:
git clone d:/host client

这句话的意思是克隆“host”仓库并将其存储在名为“client”的文件夹下。

1
不要在客户端文件夹中创建新的git存储库,而是克隆主机存储库。
cd client
git clone d:/adinsert/host

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