2013-01-08 103 views
0

在阅读教程时,我一直听说我需要创建一个名为裸仓库的共享库,用于共享回购库中的所有文件。在GIT中需要一个裸回购

我还听说裸露的回购不包含任何worfiles。

如果它没有任何工作文件,那么其他用户将在其本地机器上克隆什么?

我目前在我的linux服务器有一个目录,我需要在几个用户之间共享,这些用户将通过eclipse ide进行访问。

任何人都可以用普通的词语来解释上面强调的问题。

+0

你读过[在服务器上获取Git](http://git-scm.com/book/en/Git-on-the-Server-Getting-Git-on-a-Server)吗? – ks1322

+0

是的,但我没有得到裸回购的概念和它的要求。 –

回答

2

我还听说裸露的回购不包含任何工作文件。

是的。

远程仓库通常是一个裸仓库 - 一个没有工作目录的Git仓库。所有数据都存储在.git目录中,不需要工作目录。这只是一个协作点。

如果它没有任何工作文件,那么其他用户会在他们的本地机器上克隆 ?

来自.git目录的数据将被克隆。

+0

如果我希望用户通过此裸回购检查具有实际内容的实际文件夹,我需要做什么。 –

+1

@gautamvegeta:从裸露和非裸露的存储库进行克隆的方法相同。用户不需要特别的指示,普通的'git clone'对两者都有效。 –

+0

我听说过我需要post-receive钩子,他们是什么,以及如何设置这些。我听说我可以通过这个裸露的repo使用这个post-receive钩子克隆包含工作文件的实际仓库。 –

3

在阅读教程时,我一直听说我需要创建一个名为裸仓库的共享仓库中的所有文件。

当您将git push添加到远程存储库时,您可以覆盖working directory中的文件。为避免这种情况,您可以使用bare存储库,该存储库甚至没有working directory

然而,因为没有working directory,你不能在工作bare回购,你只能push它,并从中pull。这使得它成为多个用户的“收集点”或“协作回购”的理想选择 - 这就是为什么git教程说要使用服务器的bare存储库。

正常git回购看起来是这样的:

my-repository/ 
    .git/ 
     COMMIT_EDITMSG 
     ORIG_HEAD 
     description  
     index 
     objects 
     FETCH_HEAD  
     branches  
     gitk.cache  
     info   
     refs 
     HEAD   
     config   
     hooks   
     logs 
    file1 
    file2 

my-repositoryworking directory,包含你file1的工作文件,file2等所有的git数据存储在.git文件夹中。

bare存储库中,您没有工作文件夹。所有你必须是.git文件夹,存储在库中的顶级内容:

my-bare-repository/ 
    COMMIT_EDITMSG 
    ORIG_HEAD 
    description  
    index 
    objects 
    FETCH_HEAD  
    branches  
    gitk.cache  
    info   
    refs 
    HEAD   
    config   
    hooks   
    logs 

这是其他用户复制。

+0

谢谢你的答复。我得到了你的建议。我还有另一个目录包含我想要其他人结帐的实际文件。现在我需要做什么? –

+0

@gautamvegeta:(1)将这些文件提交到存储库。 (2)将提交推送到公共存储库。 (3)告诉其他用户从公共存储库克隆/提取。 –

+0

我听说过我需要post-receive钩子,他们是什么,以及如何设置这些。我听说我可以通过这个裸露的repo使用这个post-receive hook来克隆包含工作文件的实际仓库。 –