Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';github存储库和git裸存储库之间的区别是什么?_Git_Github - Fatal编程技术网

什么';github存储库和git裸存储库之间的区别是什么?

什么';github存储库和git裸存储库之间的区别是什么?,git,github,Git,Github,在github存储库中,我们可以git pushgit pull操作,同时,我们可以通过web UI提交到存储库。github存储库似乎同时作为裸存储库和工作存储库工作 然而,在git裸存储库中,我们不能将目录提交到存储库 所以,我的问题是 github存储库和git裸存储库之间的真正区别是什么 GitHub是一个“社交网站”,允许用户在那里托管源代码。它为您提供了多种编辑源代码的方法: 使用web界面直接编辑 使用git Push推送更新 使用svn提交提交更改 。。。(也许更多我不知道的)

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

然而,在git裸存储库中,我们不能将目录提交到存储库

所以,我的问题是


github存储库和git裸存储库之间的真正区别是什么

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

  • 使用web界面直接编辑
  • 使用git Push推送更新
  • 使用
    svn提交提交更改
  • 。。。(也许更多我不知道的)
根据您的观点,您可以在此处进行各种猜测:

  • 如果您仅使用web界面编辑文件,则可能看起来您是在非裸机repo中编辑文件
  • 如果您只使用
    git
    命令推拉,那么您似乎在与另一端的一个裸git回购进行对话
  • 如果您只使用Subversion命令,那么看起来您正在与另一方的Subversion repo进行对话
  • 如果您同时意识到所有这些,那么您可以猜测,所有不同的访问方法都归结为相同的公共内部机制
GitHub提供了很多额外的魔法来隐藏内部细节。我猜在核心部分存在着赤裸裸的git回购协议。web界面可以使用原始裸机repo的非裸机克隆,也可以具有文件的工作树,并以如下方式使用git命令:
git_DIR=/path/to/bare.git git somecommand
。实际上,这可能要复杂得多

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

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

不,GitHub上的Git回购是空的,就像您想要推送到的任何远程回购一样

他们的web界面向您显示git repo内容的表示,他们可能是一个临时工作树,直接从web UI修改文件(对于他们的用户),但这是他们自己的内部机制。
从客户的角度来看,你可以将其视为经典的裸回购;

裸存储库和开发存储库

Git存储库可以是裸存储库,也可以是 开发(非裸)存储库使用开发存储库 对于正常的日常开发。它保持了电流的概念 分支,并在中提供当前分支的签出副本 工作目录。书中提到的所有存储库 到目前为止,已经有了开发存储库。相反,一个空的存储库 没有工作目录,不应用于正常开发。 裸存储库也没有签出分支的概念。思考 一个简单的.git目录内容的裸存储库。在里面 换句话说,您不应该在裸存储库中进行提交。裸存储库 存储库似乎用处不大,但它的作用是至关重要的: 作为协作开发的权威焦点。 其他开发人员从裸存储库克隆和获取并推送 更新它。我们将在本章后面介绍一个示例 这说明了所有这些是如何协同工作的如果您使用 在--bare选项中,Git创建一个裸机存储库;否则,一个 已创建开发存储库。


但github repository似乎可以同时作为工作存储库和裸存储库,这是否意味着github repository是从git裸存储库开发的,并在裸存储库上添加了一些其他功能(如直接提交、问题等)?@Charles0429我澄清了我的回答都是远程repo裸存储库?非裸回购可以是远程的吗?@Boon自最近的git版本(git 2.3+,2015年2月)以来,是的,非裸回购可以是远程的。看见和pushtodeploy git 2.4: