2013-04-26 92 views
3

我創建了一個新的分支。如何推送新分支?

一些修改,我想的分支推送到服務器

git commit -m 'New branch' 

13 files changed, 694 insertions(+), 36 deletions(-) 

git push origin malix1.0 
Everything up-to-date 

後爲什麼它是一切最新的嗎?

git branch 
* (no branch) 
    malix1.0 

我在哪裏犯錯?

回答

3

我認爲在創建新的分支「malix1.0」之後,你以某種方式設法將存儲庫置於所謂的"detached HEAD"狀態,因此你的新提交未記錄在該分支上。

然後,當您運行git push origin malix1.0時,Git將獲取該「malix1.0」分支的內容,並嘗試更新遠程存儲庫中的同名分支。由於分支不包含與遠程回購中的匹配分支相比的任何新內容,因此不會發生任何事情。

爲了擺脫這種局面,這樣做:

  1. 做一個分支從你目前的狀態:

    git branch temp 
    

    否則,你將需要依靠git reflog功能弄個在您退房之後分享您的工作。

  2. 更新你的「mailx1.0」你的工作的分支:

    git checkout mailx1.0 
    git merge temp 
    

    也就是說,你看看這是用來接收新的提交,然後在臨時黨支部這實際上是合併分支持有這些承諾。

  3. 刪除臨時黨支部:

    git branch -d temp 
    

    這個分支不再需要,因爲它包含相比,「mailx1.0」現在的工作是對「mailx1.0」分支爲好。

  4. 推出更新後的分支:

    git push origin mailx1.0 
    
+0

參見[這](http://stackoverflow.com/a/5772882/720999)和[這裏](HTTP://計算器.com/search?q = [git] + detached + HEAD)。 – kostix 2013-04-26 16:19:59

+0

我不得不修改第2步:'git checkout -b mailx1.0 origin/malix1.0'。但其他一切都很完美。謝謝。 http://stackoverflow.com/questions/1783405/git-checkout-remote-branch – 2013-04-29 08:21:06

+0

@KicsiMano,我想知道爲什麼你不得不爲'output/malix1.0'創建*'malix1.0'作爲輸出你引用的'git分支'清楚地包含了該分支'malix1.0'。 ;-)無論如何,它是適合你的好! – kostix 2013-04-29 12:53:10