2017-03-06 47 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