github存储库和git裸存储库之间有什么区别?

时间:2013-12-31 09:18:15

标签: git github

在github存储库中,我们可以git push git pull操作,同时,我们可以通过Web UI提交到存储库。似乎github存储库同时作为裸存储库和工作存储库工作?

但是,在git bare repository中,我们无法将目录提交到存储库。

所以,我的问题是

github存储库和git裸存储库之间有什么区别?

3 个答案:

答案 0 :(得分:15)

  

似乎GitHub存储库可以同时作为工作存储库和裸存储库工作,这是否意味着GitHub存储库是从git裸存储库开发的

不,Git Repos在GitHub上是裸的,就像你要推送的任何远程仓库一样。

他们的网络界面向您展示了git repo内容的表示,他们可能是一个临时工作树,可以直接从Web UI修改文件(对于他们inline edit介绍的initially in 2011),但它是他们自己的内部机制 从客户的角度来看,您可以将其视为经典的裸仓。

答案 1 :(得分:3)

GitHub是一个“社交网站”,允许用户在那里托管他们的源代码。它为您提供了多种编辑源代码的方法:

  • 使用网络界面直接编辑
  • 使用git push
  • 推送更新
  • 使用svn integration svn commit
  • 提交更改
  • ......(也许更多,我不知道)

根据您的观点,您可以在此处进行各种猜测:

  • 如果您只使用网络界面编辑文件,则可能看起来您正在使用非裸仓库编辑文件
  • 如果你只使用git命令进行推拉,看起来你可能正在与另一端的裸git仓库交谈
  • 如果您只使用Subversion命令,则可能看起来您正在与另一方的Subversion回购交谈并且
  • 如果您同时意识到所有这些,那么您可以猜测所有不同的访问方法归结为相同的共同内部机制

GitHub提供了许多额外的魔力来隐藏你的内部细节。我猜有核心的git repos。 Web界面可以使用原始裸存储库的非裸克隆,也可以使用文件的工作树,并使用git命令:GIT_DIR=/path/to/bare.git git somecommand。实际上,它可能要复杂得多。

从技术上讲,他们甚至不需要在下面使用Git存储库。在核心,他们可能正在使用SomeSystemXYZ,它实现了所有必要的协议,以提供您正在使用Git或Subversion存储库的外观。通过查看源代码,您只能知道网站的真实工作方式。

答案 2 :(得分:0)

此引用取自; Version Control with Git

  

裸露和开发存储库

     

Git存储库是裸或者   开发(nonbare)存储库。 使用开发存储库   正常,日常发展。它保持了当前的概念   分支并提供当前分支的签出副本   工作目录。书中提到的所有存储库都是如此   远远一直是开发资源库。相比之下,一个裸存储库   没有工作目录,不应该用于正常开发。   裸存储库也没有签出分支的概念。认为   裸存储库只是.git目录的内容。在   换句话说,你不应该在裸存储库中提交。裸露   存储库似乎没什么用处,但它的作用至关重要:到   作为协作发展的权威焦点。   其他开发人员从裸存储库克隆和获取并推送   更新它。我们将在本章后面的示例中进行操作   这显示了所有这些如何一起工作。 如果你发布git clone   在--bare选项中,Git创建了一个裸存储库;否则,a   开发存储库已创建。