2012-11-28 25 views
2

我是git的新手,但我一直在使用它在我設置的遠程服務器上玩,並且我很確定我瞭解基礎知識。沒有遙控器/產地/ HEAD與gitlab

我剛剛設置了gitlab,並將一些代碼推送到了它上面的一個新項目。我所做的是:

  1. 把我所有的代碼在一個目錄
  2. 的git的init
  3. git的補充。
  4. git的承諾-m 「初始提交」
  5. 混帳推起源主

原屬設置了:

git remote add origin [email protected]:myproject.git 

現在,當我做混帳分支-a我看到:

* master 
    remotes/origin/master 

而我以前玩的時候,總是看到:

* master 
    remotes/origin/HEAD -> origin/master 
    remotes/origin/master 

我明白,頭是一個指針,當前簽出的分支,所以不應該存在於原點?爲什麼它沒有創建?

回答

7

別擔心這個遙控器HEAD。這條線只是原始克隆工作方式的神器,代表了遠程的HEAD的狀態。

它可以被認爲是服務器首選的默認分支(即使在遠程裸倉庫中) - 默認情況下,如果沒有使用-b branch選項,它將由您的客戶端git clone檢出。

您的本地文件.git/refs/remotes/origin/HEAD現在可能包含字符串ref: refs/remotes/origin/master。你可以刪除它,如果你想(不是我建議這樣做,請記住),git branch -a不會再顯示它。

除了遠程HEAD這一用法作爲第一個克隆的默認分支之外,對於您的遠程HEAD狀態永遠不重要。您只應該擔心真實遠程分支的狀態,而不是遠程HEAD,因爲它只對遠程狀態作爲其默認選定分支有意義。而如果遠程是裸倉庫,即使在遠程也沒什麼意義。

,爲什麼你沒有看到你這麼做的時候git remote add ...git fetch遠程端的原因,git pull是因爲在這種情況下的git沒有在其默認的遠程分支皮卡在默認情況下做出決定。