2011-11-19 180 views
119

當我學習git時,我總是碰到HEAD,master,origin的術語,我不確定它們有什麼區別。如果我理解正確,HEAD總是等於最新版本?如果是這樣,是整個存儲庫的最新版本,還是特定分支或標籤的最新版本?這很混亂。我已經閱讀了很多這方面的教程和分支/合併等東西,但仍然無法圍繞它進行考慮。HEAD,master,origin的git概念是什麼?

回答

154

我強烈推薦本書"Pro Git" by Scott Chacon。花點時間,真正閱讀它,同時探索實際的git回購。

HEAD:當前提交您的回購。大部分時間HEAD都指向您分支中的最新提交,但不一定如此。 HEAD真的只是意味着「我的回購目前指向什麼」。

如果提交HEAD引用不是任何分支的提示,則稱爲「分離頭」。

master:git在首次創建回購庫時爲您創建的默認分支的名稱。在大多數情況下,「主人」是指「主要分支」。大多數商店都有人推動掌握,而主人被認爲是回購的權威觀點。但是釋放分支從主分離釋放也很常見。您的本地回購有其自己的主分支,幾乎總是遵循遠程回購的主人。

原點:git給你的主遠程倉庫的默認名稱。你的盒子有自己的回購,並且你很可能推出一些你和你的同事推動的遠程回購。這個遠程回購幾乎總是被稱爲起源,但它不一定是。

HEAD是git中的官方概念。 HEAD總是有一個明確的含義。 masterorigin是通常在git中使用的常用名稱,但它們不一定是。

+0

你是什麼意思?「HEAD的意思是」我的回購商目前指的是什麼「。如果存儲庫中有多個分支,哪一個是根據你的HEAD?如果有3個分支(與主人一起),並且需要在分支A中進行提交,那麼HEAD仍然可以處於「主」的提交中。那麼,回購商現在指的是哪一個版本? – OK999

31

HEAD不是最新版本,它是當前版本。通常,這是當前分支的最新版本,但不一定是。

master是一個通常給主分支的名字,但它可以被稱爲其他任何東西(或者可能沒有主分支)。

origin是通常給予主遙控器的名稱。遠程是另一個可以從中提取並推送到的存儲庫。通常它在一些服務器上,比如github。

+0

你能舉一個什麼時候HEAD是最新的但不是最新的例子嗎?我以前從來沒有見過。或者你的意思是它可能不是最新的,因爲你的分支在它跟蹤的遠程分支後面? –

+9

@MattGreer:如果你檢出一些舊的東西(比如像'git checkout v1.1'這樣的標籤),那麼你的HEAD變成了該標籤的提交。它可能不是最新的提交。 –

10

雖然這並不直接回答這個問題,但有很棒的書可以免費使用,這將幫助您瞭解基本知識,稱爲 ProGit。如果你更喜歡死木版本的收集,你可以從Amazon購買它。

+3

儘管這個鏈接可能回答這個問題,但最好在這裏包含答案的基本部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – nha

相關問題