即使自定义Git服务器根本不存储代码,它也能提供更新吗?

即使自定义Git服务器根本不存储代码,它也能提供更新吗?,git,updates,Git,Updates,我读了《服务器上的Git》一章,其中展示了如何制作Git服务器:上面写着(第94页): 为了最初设置任何Git服务器,必须将现有存储库导出到新的存储库中 repository—不包含工作目录的存储库 服务器完成后,我意识到没有工作目录意味着没有代码:如果我做对了,我们的服务器中就不会存储任何代码 我的负责人让我在公司网络中设置一个Git服务器来存储最新的生产代码,但他希望代码在那里:他认为这个服务器既是Git服务器又是更新服务器 这意味着我们的Git服务器内部没有代码,应该提供开发人员编写的代码

我读了《服务器上的Git》一章,其中展示了如何制作Git服务器:上面写着(第94页):

为了最初设置任何Git服务器,必须将现有存储库导出到新的存储库中 repository—不包含工作目录的存储库

服务器完成后,我意识到
没有工作目录
意味着没有代码:如果我做对了,我们的服务器中就不会存储任何代码

我的负责人让我在公司网络中设置一个Git服务器来存储最新的生产代码,但他希望代码在那里:他认为这个服务器既是Git服务器又是更新服务器

这意味着我们的Git服务器内部没有代码,应该提供开发人员编写的代码的更新


这真的可能吗?或者我应该对更新给出不同的建议,在存储代码(使用Git服务器)和提供更新(使用另一台服务器)之间拆分作业吗?

没有工作目录并不意味着没有代码。代码历史记录存储在数据库中,这是裸存储库的主要用途。

没有工作目录并不意味着没有代码。代码历史记录存储在数据库中,这是裸存储库的主要用途。

因为,数据库(非裸存储库中的
.git/objects/
.git/objects/pack/
目录)存储所有内容

Git的要点是存储提交,通常是永久性的。这些提交不是文件,尽管它们(间接)包含文件。对象文件,Git称之为blob;提交和另外两种称为树和带注释的标记的内部对象类型都以一种特殊的、压缩的(有时非常压缩的)Git-only格式存储。一般来说,这些只对Git本身有用

为了让您或您计算机的其他部分使用文件,它们需要是普通格式,而不是一些特殊的Git格式。Git允许您在一个您将自己完成工作的区域中执行此操作:工作树

如果你有一个工作树,你很可能会用它来做工作。如果Git存储库应该接收推送请求并对其采取行动,那么当突然出现bam时,某个可怜的家伙的工作树中正在进行的工作会发生什么!有人把新东西推到他的仓库里?坏事发生了,是什么

Git使用的解决方案是显而易见的:如果要接收推送,请删除工作树。现在没有地方进行工作,所以从来没有任何内容被覆盖。这就是
--bare
存储库的功能:它消除了工作树,因此没有地方工作,因此不会被其他人突然覆盖

妥协的方式有很多种,但和大多数妥协一样,它们往往有各种各样的问题。裸机存储库可以接收推送以接收提交,也可以接受获取连接请求以发送提交,而被推送请求覆盖的唯一一件事是裸机存储库的想法,即提交任何特定分支名称在“快进”中的理想含义以使其仅向可从名称访问的提交集添加新的提交。(请记住,在Git中,分支名称只是指向一个特定提交的可移动指针。另请参见)

因为,数据库(非裸存储库中的
.Git/objects/
.Git/objects/pack/
目录)存储了所有内容

Git的要点是存储提交,通常是永久性的。这些提交不是文件,尽管它们(间接)包含文件。对象文件,Git称之为blob;提交和另外两种称为树和带注释的标记的内部对象类型都以一种特殊的、压缩的(有时非常压缩的)Git-only格式存储。一般来说,这些只对Git本身有用

为了让您或您计算机的其他部分使用文件,它们需要是普通格式,而不是一些特殊的Git格式。Git允许您在一个您将自己完成工作的区域中执行此操作:工作树

如果你有一个工作树,你很可能会用它来做工作。如果Git存储库应该接收推送请求并对其采取行动,那么当突然出现bam时,某个可怜的家伙的工作树中正在进行的工作会发生什么!有人把新东西推到他的仓库里?坏事发生了,是什么

Git使用的解决方案是显而易见的:如果要接收推送,请删除工作树。现在没有地方进行工作,所以从来没有任何内容被覆盖。这就是
--bare
存储库的功能:它消除了工作树,因此没有地方工作,因此不会被其他人突然覆盖


妥协的方式有很多种,但和大多数妥协一样,它们往往有各种各样的问题。裸机存储库可以接收推送以接收提交,也可以接受获取连接请求以发送提交,而被推送请求覆盖的唯一一件事是裸机存储库的想法,即提交任何特定分支名称在“快进”中的理想含义以使其仅向可从名称访问的提交集添加新的提交。(请记住,在Git中,分支名称只是指向一个特定提交的可移动指针。另请参见)

我在远程Git服务器的
project.Git
中浏览了所有目录,但没有看到您所说的数据库。通过<代码>数据库<代码>数据库<代码>你的意思是收集<代码>对象的意思是收集<代码>数据库<代码>数据库<代码>数据库<代码>数据库<代码>数据库<代码>数据库<代码>数据库<代码>数据库<代码>数据库<代码>数据库<代码>数据库你的意思是你的意思是收集<代码>数据库的意思是收集<代码>数据库的意思你的意思是收集<代码>数据库<代码>数据库中一般,git数据库可以包含“松散”对象(<代码>代码>代码>对象/代码>对象/代码>对象/353535353535\35353535#/////3535353535#3535##35#\3535#35#3535#35##35##;和打包文件(代码<<<<<码码码>对象/码码码/码码码/码码/码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码本月月月日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日打包)。仅打包文件a