"git --bare init"不仅仅产生一个.git目录

3
这很令人困惑。我在许多地方读到了git --bare init会将你运行该命令的目录设置为一个裸Git仓库,这是你想要用作中央仓库的那种。特别地,我看到这个命令只会生成一个空的.git子目录。但是,当我从GitGui bash窗口运行此命令时,会创建几个目录,其中没有一个是.git。相反,如果我运行git init,我会得到.git目录和所有使用--bare选项创建的目录。我的bash工具有问题吗?

你能列出在你的问题中创建了哪些其他目录吗?也许有人可以解释一下它们是做什么用的。 - IMSoP
2个回答

5
推荐使用git init --bare的方法是指定一个目录名称,用来存储裸仓库。例如:git init --bare myproject.git(通常将裸仓库的名称以.git结尾)。这将创建一个新的文件夹myproject.git,并在其中放置Git所需的所有文件。
如果命令中不指定仓库名称,则Git会将当前目录初始化为(裸)仓库。因此,它将在当前文件夹中放置所有需要的内容。
因此,您看到的是正确的结果,并且所有这些文件都是裸仓库所必需和期望的。

也许这就是我需要做的。我注意到,如果没有任何*.git目录,我的GitGui无法将该父文件夹识别为有效的存储库。 - swingMan
你的GUI可能无法使用裸仓库(而且说实话,你也不应该在裸仓库上做太多事情)。大多数GUI主要设计用于执行Git的工作目录相关命令。由于裸仓库没有工作目录(按设计),因此它可能并不是那么有用。 - poke
好的,我运行了“git --bare init myproject.git”,它按照你说的设置了目录结构,但是GitGui仍然无法识别它为一个仓库,也就是说我无法通过GUI打开它或浏览它。裸仓库有什么特殊之处导致我无法“打开”它吗? - swingMan
poke....有道理。这可能是GUI的性质和它是一个裸仓库的原因。谢谢。 - swingMan
我希望 GitGui 可能会将裸仓库识别为可克隆的内容,但不会将其视为可以打开或操作的内容(如果它不将其识别为可克隆的内容也是合理的,因为对于大多数人来说,这是相对较少需要做的事情)。 - Etan Reisner

4

所有您看到的目录都是通常在 .git 目录内部的目录。由于没有工作副本,因此不需要将常规文件与 .git 中的文件分开,因此没有不必要的 .git 子目录。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接