Qwertiy Asked:2020-09-29 05:10:37 +0000 UTC2020-09-29 05:10:37 +0000 UTC 2020-09-29 05:10:37 +0000 UTC 什么是裸旗? 772 --bare克隆/创建存储库时的标志是什么? 传输存储库时它提供什么? git 1 个回答 Voted Best Answer aleksandr barakin 2020-09-29T08:41:14Z2020-09-29T08:41:14Z 很短的一句话 例如,在这里您需要将存档从一台服务器复制到另一台服务器,并向您提供说明: 将存档从 server1 复制到本地计算机 解压缩存档 将存档复制到服务器 2 为什么,有人想知道,这里需要第 2 点,关于解压档案???没有必要。所以在复制版本库时,情况类似——为什么要从版本库中提取工作目录的内容?没必要。这就是该选项的用途--bare。 更详细的答案 也许我们应该首先说明什么是 git 存储库(经常使用术语“git 存储库”)。 这是一个新创建的存储库,还没有跟踪(还)单个文件,但已经包含 9 个目录和 13 个文件(在git程序的不同版本和构建中,具体数字当然可能略有不同),允许git程序开始跟踪项目文件的最小值(好吧,几乎是必要的 -hooks你可以在没有文件的情况下使用目录中的示例): $ tree -F . ├── branches/ ├── config* ├── description ├── HEAD ├── hooks/ │ ├── applypatch-msg.sample* │ ├── commit-msg.sample* │ ├── post-update.sample* │ ├── pre-applypatch.sample* │ ├── pre-commit.sample* │ ├── prepare-commit-msg.sample* │ ├── pre-push.sample* │ ├── pre-rebase.sample* │ └── update.sample* ├── info/ │ └── exclude ├── objects/ │ ├── info/ │ └── pack/ └── refs/ ├── heads/ └── tags/ 9 directories, 13 files 运行命令后,这些文件和目录将出现在当前(最初为空)目录中: $ git init --bare 如果你省略选项--bare,它们都将“隐藏在引擎盖下” ——git程序不会在当前目录中创建它们,而是在子目录中.git(名称开头的点用于确保该子目录是获取目录列表时默认不显示)。 它们将被“隐藏”,不仅是为了“美观”,也不仅仅是因为这些“内部杂物”对git程序的“普通”用户没有什么兴趣。主要目标是为项目的实际文件(和目录)“释放”当前目录。在这种情况下,它(当前目录)将充当工作目录(原始文档中的工作树,另一个常见的翻译是工作副本)。 如果存储库有一个工作目录,那么这样的存储库被称为“非裸存储库”,或“具有工作目录的存储库”,为了简洁起见,通常简称为“存储库”。如果没有工作目录,那么这样的存储库称为“裸存储”(字面意思是“裸”)。 这种“裸存储”有什么用?它的实际意义是什么?我们能拿他怎么办? 好吧,从“最终”用户(通常是程序员)的角度来看,确实没什么用,因为项目的文件/目录是不可见的。但从git程序的角度来看,这是一个成熟的存储库,可以克隆、从中提取并推送到其中。存储库以这种形式(没有工作目录)位于 github.com、bitbucket.org 等服务器上。git程序可以很容易地从这样的存储库中提取和显示任何信息:提交历史、项目文件列表、任何项目文件的内容,因为它们在任何提交之后查看,等等。 该选项--bare也可以与命令一起使用clone:在这种情况下,在当前(或指定)目录中,将首先创建存储库的“主干”(由上述 13 个文件和 9 个目录组成),它将填充来自克隆存储库的信息(这将主要影响目录objects- git 对象存储在其中:提交,树和 blob)。 但是如果你clone 不带这个选项运行命令,那么,首先,版本库会放在子目录.git下,而不是直接放在当前目录下,其次,在填充版本库后,项目的所有文件和目录都会被额外提取到当前目录。 还值得注意的是,存储库的属性——“裸/非裸”——作为行或部分存储在config存储库内的文件中。bare=truebare=false[core] 哦,是的,我完全忘记了: 迁移存储库时它(隐含的选项--bare)提供什么? 综上所述,我希望在将存储从一台服务器传输到另一台服务器的情况下,这个选项可以让您不做不必要的(在这种情况下)工作:节省处理器周期(用于提取项目文件/目录),在不必要的读取操作/记录上节省硬盘资源,节省一些电力,并最终延缓宇宙的热寂。这才是人类存在的真正目的吧?
很短的一句话
例如,在这里您需要将存档从一台服务器复制到另一台服务器,并向您提供说明:
为什么,有人想知道,这里需要第 2 点,关于解压档案???没有必要。所以在复制版本库时,情况类似——为什么要从版本库中提取工作目录的内容?没必要。这就是该选项的用途
--bare。更详细的答案
也许我们应该首先说明什么是 git 存储库(经常使用术语“git 存储库”)。
这是一个新创建的存储库,还没有跟踪(还)单个文件,但已经包含 9 个目录和 13 个文件(在git程序的不同版本和构建中,具体数字当然可能略有不同),允许git程序开始跟踪项目文件的最小值(好吧,几乎是必要的 -
hooks你可以在没有文件的情况下使用目录中的示例):运行命令后,这些文件和目录将出现在当前(最初为空)目录中:
如果你省略选项
--bare,它们都将“隐藏在引擎盖下” ——git程序不会在当前目录中创建它们,而是在子目录中.git(名称开头的点用于确保该子目录是获取目录列表时默认不显示)。它们将被“隐藏”,不仅是为了“美观”,也不仅仅是因为这些“内部杂物”对git程序的“普通”用户没有什么兴趣。主要目标是为项目的实际文件(和目录)“释放”当前目录。在这种情况下,它(当前目录)将充当工作目录(原始文档中的工作树,另一个常见的翻译是工作副本)。
如果存储库有一个工作目录,那么这样的存储库被称为“非裸存储库”,或“具有工作目录的存储库”,为了简洁起见,通常简称为“存储库”。如果没有工作目录,那么这样的存储库称为“裸存储”(字面意思是“裸”)。
这种“裸存储”有什么用?它的实际意义是什么?我们能拿他怎么办?
好吧,从“最终”用户(通常是程序员)的角度来看,确实没什么用,因为项目的文件/目录是不可见的。但从git程序的角度来看,这是一个成熟的存储库,可以克隆、从中提取并推送到其中。存储库以这种形式(没有工作目录)位于 github.com、bitbucket.org 等服务器上。git程序可以很容易地从这样的存储库中提取和显示任何信息:提交历史、项目文件列表、任何项目文件的内容,因为它们在任何提交之后查看,等等。
该选项
--bare也可以与命令一起使用clone:在这种情况下,在当前(或指定)目录中,将首先创建存储库的“主干”(由上述 13 个文件和 9 个目录组成),它将填充来自克隆存储库的信息(这将主要影响目录objects- git 对象存储在其中:提交,树和 blob)。但是如果你
clone不带这个选项运行命令,那么,首先,版本库会放在子目录.git下,而不是直接放在当前目录下,其次,在填充版本库后,项目的所有文件和目录都会被额外提取到当前目录。还值得注意的是,存储库的属性——“裸/非裸”——作为行或部分存储在
config存储库内的文件中。bare=truebare=false[core]哦,是的,我完全忘记了:
综上所述,我希望在将存储从一台服务器传输到另一台服务器的情况下,这个选项可以让您不做不必要的(在这种情况下)工作:节省处理器周期(用于提取项目文件/目录),在不必要的读取操作/记录上节省硬盘资源,节省一些电力,并最终延缓宇宙的热寂。这才是人类存在的真正目的吧?