2012-09-21 20 views
12

我被教導,你可以推到並通過這樣做,從一個遠程分支符合當前的Git分支的名字扯:的Git拉緣起首

git push origin HEAD 

git pull origin HEAD 

它總是工作對於我來說,但它奇怪地有時不工作,而是推遲從主分支分支推動/拉(這會導致合併拉...不是我想要做的)。我知道,你可以很容易地推/簡單地使用像分支的名字從你的分支拉:

git pull origin name-of-branch-i-want-to-pull-from 

反正

  1. 是有一些原因,HEAD是失去蹤跡/不指向我目前的分支,就像它幾乎總是這樣?
  2. 有沒有任何方法可以推送/拉到我目前正在使用的分支(只要遠程分支名稱匹配),而無需在命令中明確命名分支?

回答

2

感謝@abackstrom的一些嚴重幫助,我能夠解決我的問題。 從本質上講,這個職位是我的問題,和解決方案:

Git branch named origin/HEAD -> origin/master

到「重建」 /正確跟蹤本地蓋分支/指針具體的命令是:

git remote set-head origin -a 

我希望這有助於遇到此問題的任何其他人。

4

HEAD並不是真正的分支。它是一個指向你目前已經簽出的提交的指針,並且通常會引用一個分支,但是如果你執行的操作類似git checkout <sha>git checkout <tag>,那麼HEAD將直接引用一個提交,而不與分支綁定 - 這稱爲「分離HEAD「狀態,當您進入這種狀態時通常應該從git checkout得到警告。在那個狀態下,試圖推/拉HEAD沒有意義,因爲你不在分支上。

+1

是的,這是絕對有道理的,因爲那麼你正在追蹤一個非分支,但這不是在這裏發生的事情。 相反,我目前正在跟蹤一個分支(例如標題爲'patch'),我承諾,然後我: 'git push origin HEAD' 並且它推到原點/主標點 它也發生在pull上。奇怪。 – Rican7