1

到目前为止,从阅读 git 教程我了解到,为了共享驻留在我的 ubuntu linux 服务器中的项目文件,我需要创建一个裸存储库并将其链接到实际存储库,以便当用户克隆实际存储库时,他们会获得实际存储库有实际的工作文件。

当他们将更改推送到服务器时,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.
4

2 回答 2

2

如何创建我的裸仓库。

这个

要将现有存储库克隆到新存储库bare中,您将运行以下命令:

git clone --bare my_project my_project.git

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

这个

存储库non-bare可以添加bareremote

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 上有很多关于此的问题。

这个接收后挂钩是什么?

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

它住在哪里?

在存储库的hooks目录中bare.git/hooks否则。读这个

我需要为此做哪些配置。

您不需要post-receive钩子来完成您要求做的事情(设置一个基本存储库,bare以便少数多个用户可以使用它)。如果您不知道 a是什么,则此时不需要。设置您的存储库,熟悉使用基本的 git 命令并在repo 上与协作者合作,并询问有关设置和使用钩子的特定问题。git pushgit pullhookbarepost-receive

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

  1. 如何创建我的裸仓库。(这是Chapter 4)。
  2. 如何将其链接到包含实际工作文件的实际存储库。(这是Chapter 2, section 5)。
  3. 这个接收后挂钩是什么?它住在哪里?我需要为此做哪些配置。(这是Chapter 7, section 3)。
于 2013-01-08T14:22:46.950 回答
1

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

裸存储库是没有工作文件夹(即文件被签出的地方)的存储库。要创建一个裸存储库,请使用git init --bare <repository name>.

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

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

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

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

于 2013-01-08T14:23:51.207 回答