2013-06-04 65 views
3

我需要做什麼: 我有十個提交的主要內容。我需要將這些提交移動到一個新的分支。我一直在不停地拉,但我還沒有推動我的工作。我怎樣才能使我的十個提交到一個新的分支,然後我可以推?如何將我的10次提交從master轉移到git中的新分支?

我試過按照步驟in this question here,但它們不起作用。具體來說,當我進行rebase時,所有我最終都會提交master,而在我的新分支上沒有提交。沒有任何提交被移動到新的分支,我不明白這是怎麼可能的,因爲問題中提供的步驟。

回答

2

從我的理解,這是你擁有的一切:

* commit 10 (master) 
| 
* commit 9 
| 
... 
|    * (origin/master) 
* commit 1  | 
|.------------^ 
* 

我想你問什麼要的是有一個新的分支提交1-10。

爲了做到這一點,你簡單地用分支名稱標記分支,然後將主設備重置爲原點/主設備。

所以:

git checkout master # your current latest set of changes (commit 10) 
git branch feature # the name of your branch 
git reset --hard origin/master # sets master to point to origin/master 
git pull --rebase # updates master with origin/master 
git checkout feature && git merge master # updates feature branch with what is on origin/master 

這將結束:

* commit 11 (feature) merge commit 
|^------------. 
* commit 10 | 
|    ... 
... 
|    * (master, origin/master) 
* commit 1  | 
|.------------^ 
* 

這是你想要做什麼?

+0

這使我得到了最終的解決方案,這是爲了:1)結帳大師2)git日誌獲取最近的提交ID 3)重新設置4)重置硬頭5)結帳最近的提交(去一個分離頭狀態)6)創建一個新的分支,並提交自動放入該新的分支 – mmr

0

一種選擇是隻推你的工作提高到一個新的分支:

git push HEAD:branchname 

這將在服務器,其中包含你目前的工作中創建一個新的分支branchname。 - 在這種情況下,您可能會感到困惑,因爲您的工作仍在當地掌握。

得到這個權利,你可以只是你的本地主復位到遠程版本:

git reset --hard @{u} 

要知道,這將扔掉所有未提交的機會。

然後在branchname上工作,你可以做git checkout branchname

0

只需重命名你的分支,並將它推:

git branch -m branchname 
git push -u branchname 

這裏-u重要的是要更新跟蹤分支。

相關問題