2015-12-28 31 views
1

enter image description here放棄Git修訂和合並特性分支到主

  • 首先,我的工作,並就主分支3個提交:Wijzing 1,2,3
  • 然後我做了結帳... on commit Wijziging 1
  • 然後我創建了一個新分支新功能並開始進行更改。
  • 現在我想扔掉2個提交:Wijzing 2Wijziging 3
  • 我想合併新功能與主。

更新:

這些步驟之後我做了以下內容:

git checkout master 
git reset --hard HEAD^^ 
git merge new-feature 

然後我點擊SourceTree enter image description here

更新 在S解決方法是強制推送:

git push -f 

強制推送後,它再次工作。

enter image description here

+0

你的意思是你想擠壓一起提交wijziging 1,2和3嗎?或者你想扔掉wijziging 1和2的變化嗎? – cmaster

+0

這是真正的「存儲庫」還是僅僅是例子?如果你有一些真實的倉庫,你已經發布了一些遠程謹慎的倉庫。 – Mateusz

+0

@Mateusz我創建了一個虛假的存儲庫來練習;)。 –

回答

2

這應該做的伎倆:

git checkout master 
git reset --hard HEAD^^ 
git merge new-feature 

基本上,你需要到master分支指針移動兩次提交回來,然後new-feature分支合併到它。請注意,git reset --hard是一個有潛在危險的命令,因爲它會拋棄對工作副本中所跟蹤文件的任何更改。

你可能需要做的情況下的力量推丟棄的提交已被推遲到遠程:

git push -f 
+1

或者直接在檢查出主人後:'git reset --hard new-feature',然後不要忘了在你對你的歷史感到高興的時候做一次推力... – Philippe

+0

@ Philippe:沒錯,除非你想創建合併提交。 –

+0

@eugeney我已添加您的更改。看起來不錯,但我無法推送到服務器。當我拉時,我想拋棄的變化又回來了。有什麼想法嗎? –

0

你的具體情況,一個簡單的

git checkout new-feature 
git branch -f master 
git checkout master 

接着是

git push -f 

應該做的伎倆。 git branch -f命令只是將master分支指向當前的HEAD,丟棄了master的舊歷史記錄。