将裸仓库链接到Git和post-receive钩子中的实际仓库

时间:2013-01-08 13:33:57

标签: eclipse git version-control egit

至于阅读git tutorails我已经明白,为了共享我的ubuntu linux服务器中的项目文件,我需要创建一个裸存储库并将其链接到实际的存储库,以便当用户克隆实际的repo时,他们得到具有实际工作文件的实际回购。

当他们将更改推送到服务器时,post-receive挂钩现在会更新包含工作文件的实际repo。

这是我能理解的全部内容,我有很多困惑,我有以下问题:

1) How do I create my bare repo.
2) How do I link it to the actual repo consisting the actual work files.
3) And what is this post-receive hook? Where does it reside? And what configurations do I need to do for the same.

2 个答案:

答案 0 :(得分:2)

  

如何创建我的裸仓库。

阅读this

要将现有存储库复制到新的bare存储库,您可以运行以下命令:

git clone --bare my_project my_project.git
  

如何将其链接到包含实际工作文件的实际仓库。

阅读this

non-bare存储库可以将bare添加为remote

git remote add <name> <remote-URL>

然后,从non-bare

git push <name-of-remote> <branch-to-push-from>:<remote-branch-to-push-to>. 

同样,Git SCM book涵盖了这一点,我强烈建议您在StackOverflow再次提出相同问题之前阅读

阅读本书。它为您提供了搜索字词(例如git remote repositoriesgit bare server等)。当您知道要搜索的内容时,StackOverflow上有关于此问题的批次

  

这个post-receive钩子是什么?

这是在push存储库之后运行的脚本。 (在收到数据后,存储库运行post-receive脚本 - 明智的命名)。

  

它在哪里居住?

hooks存储库的bare目录中;在.git/hooks否则。阅读this

  

我需要为此做什么配置。

您不需要post-receive挂钩来执行您要求执行的操作(设置基本的bare存储库,以便少量多个用户可以{ {1}}和git push来自它。如果您不知道git pull是什么,此时您不需要一个。设置您的存储库,使用基本的git命令并与hook repo上的协作者一起工作,并提出有关设置和使用bare挂钩的具体问题。

我不能强调这一点:阅读本书。我会帮你的。我学到了很多。 :) 告诉您如何:

  1. 如何创建我的裸仓库。 (这是Chapter 4)。
  2. 如何将其链接到包含实际工作文件的实际仓库。 (这是Chapter 2, section 5)。
  3. 这个post-receive钩子是什么?它在哪里?我需要为此做什么配置。 (这是Chapter 7, section 3)。

答案 1 :(得分:1)

.git文件夹是真正的存储库。它将是本地工作文件夹中的一个文件夹,但是裸存储库没有工作文件夹,因此它具有.git扩展名。

裸存储库是没有工作文件夹的存储库(即文件被检出的位置)。要创建裸存储库,请使用git init --bare <repository name>

在本地工作时,执行git clone <repository path> <working folder>以生成远程存储库的本地副本。然后使用git fetchgit pull定期更新,并使用git pull将更改应用回服务器。在本地克隆存储库会为其创建一个名为remote的名称,此名称为origin

分支基本上是一个命名的开发路径,使用git branch命令创建。将本地分支与远程分支链接告诉git在获取时默认为什么,并且推送并且可以简化所使用的命令。要链接或跟踪远程分支,请使用git branch -u <remote>/<branch>

没有理由让git的各种钩子参与任何这些基本操作。

git book很好地涵盖了这些基本操作。