0

背景:

我创建了一个裸仓库

cd ~  
git init --bare GitDrive  

这个想法是用它作为谷歌驱动器的 git 目录

cd "Google Drive"  
echo "gitdir: ../GitDrive  

但是 git 不喜欢这样,直到我bare = true.git/config

这让我想到了无论回购是否是裸露的配置设置的目的。
阅读git-config似乎可以避免不得不猜测回购是否是裸露的。

我知道您无法在裸仓库中结帐,但无论 config.bare 设置如何,您都无法在 repo/.git/ 中结帐。

在什么情况下 git 不能确定一个 repo 是否是裸露的?

包含文件 config/info/hooks/index... 的目录的技术术语是什么?
作为repo/一个裸回购和repo/.git/其他。

git init --bare使用.git 目录创建的存储库和从实时存储库中提取的存储库之间的技术区别是什么?

4

2 回答 2

1

裸存储库根本不与任何工作目录相关联。它的目的是接受来自其他存储库的推送。非裸仓库有一个工作目录,它是文件夹的父目录.git。尽管在技术上可以推送非裸存储库,但不建议这样做,因为如果您要推送到非裸存储库的当前分支,可能会导致工作目录和索引出现问题,因为它们可能无法正确合并。

裸存储库可以有一个当前分支,但是当您检出分支时,除了HEAD文件之外没有任何影响。这样做的目的是使用 Git 命令进行浏览。无法直接查看文件结构。

于 2015-01-14T14:19:57.490 回答
0

你的问题不清楚;如果目标是将目录Google Drive中的文件放在git位于目录外部的存储库中,Google Drive那么解决方案非常简单:

cd "Google Drive"
git init --separate-git-dir ../GitDrive

确保该目录../GitDrive不存在或为空。

这种方式将在目录而不是(在当前目录内)git创建存储库。但是,它将创建一个在工作树(“Google Drive”目录)中命名的文件,其中包含存储库的路径(完整路径)。../GitDrive./.git.git../GitDrive

您可以在 in和 in 中运行git命令,它们将起作用(存储库也知道工作树在哪里)。但是你没有真正的理由去处理存储库中的文件。像往常一样在工作树(目录)中做你的工作。Google DriveGitDriveGoogle Drive

于 2015-01-16T12:05:48.087 回答