2017-03-06 49 views
1

这是不是关于隐藏.git文件夹的问题 !!我怎样才能生成git的* FILE *和它是如何的(de)构建的?

我的理解

我通常使用GitHub的大多数我的Git的工作。当与远程服务器的工作,可能我我推,并获取这样配置:

$git remote -v 
origin [email protected]:<my_org>/<my_repo>.git (fetch) 
origin [email protected]:<my_org>/<my_repo>.git (push) 

这里的问题是专门关于<my_org>/<my_repo>.git文件。

我知道它“包含”存储库所需的所有机器:文件,索引,挂钩,引用等。我一直在“想象”它是一个分层的zip文件,实质上就是整个存储库,因为它会在本地看,如果我要压缩一切。

我的问题

  1. 我的理解是否正确?是<blah>.git文件只是一个仓库的拉链?我如何生成它?
  2. 为了构建/解构它,每次我要么git initgit push或每次我git clone git做什么? (这是真的只是一个压缩和解压?)
  3. 有什么办法来创建这个结构我自己?例如,是this GitHub上是如何做的对他们的最终(或多或少)?
    • 我可以使用相同的git init -g命令或类似的东西来创建.git文件。
  4. <blah>.git文件的文档(超出上面的链接)在哪里?
    • 我搜索了一会儿,但".git"上的所有内容都会显示隐藏的目录,而不是文件。
  5. 如果我在我的机器上创建了这个<blah>.git文件,其他人可以使用我的机器作为远程存储库吗?
    • 换句话说,我怎么会创造一个机和文件/文件夹结构,像别人远程仓库?
+1

你的问题似乎很广泛,但如果你只是想将一个版本库复制到一个新的位置,你只需要复制'.git'文件夹即可。 –

+1

.git是一个目录。它默认是一个裸露的git存储库的名称。 'git init --bare .git' – ElpieKay

+1

正如@ElpieKay所说,它不是一个文件,而是一个目录。裸存储库'foo.git'的内容与非裸存储库'foo'中'.git'的内容相匹配,只是'config'文件的'core.bare'设置为'true'。 (但是从现有的非纯粹克隆中设置它的最好方法是'git clone --bare',也可以设置'core.shared'。)要将它用作服务器,您的机器必须允许一些访问类型,无论是ssh,http,通过'git://'协议,或其他。 – torek

回答

2

号:repo.git它是代表一个纯仓库(没有工作树,只是回购文件)

压缩/解压缩只发生delta encoding of the pack files,其然后被克隆期间发送的文件夹/推/拉。

如果你想建立只有一个“压缩”文件,请参见git bundle,产生全的Git回购为一个文件。

+1

在裸露repo:https://raw.githubusercontent.com/sitaramc/git-notes/6ab1eada80d7c7a676cbd94a5d58f556634d794b/concepts-and-tips/bare.notes,https://github.com/sitaramc/git-notes/blob/cb3ac8bcb85f7d11bb45aa89becd90c8b4738bf1/concepts-和技巧/ 0-terminology.notes – VonC