在我的開發分支上,我做了一些沒有解決的更改,所以我回到了兩個提交,然後分支並在我的新分支上進行了所有相關更改,其中現在正確執行該任務。替換git中的另一個分支
我想讓發展成爲我現在的新分支。
我的想法是,我應該以某種方式從開發分支中刪除這兩個變化,然後再合併回來。如果這是正確的方式來做到這一點,我該怎麼做?如果不是,我該怎麼做才能解決這個問題?
沒有其他人在這個項目上工作,所以不用擔心這個問題。
在我的開發分支上,我做了一些沒有解決的更改,所以我回到了兩個提交,然後分支並在我的新分支上進行了所有相關更改,其中現在正確執行該任務。替換git中的另一個分支
我想讓發展成爲我現在的新分支。
我的想法是,我應該以某種方式從開發分支中刪除這兩個變化,然後再合併回來。如果這是正確的方式來做到這一點,我該怎麼做?如果不是,我該怎麼做才能解決這個問題?
沒有其他人在這個項目上工作,所以不用擔心這個問題。
你應該
$ git checkout develop
,然後互動變基刪除兩個垃圾桶承諾:
$ git rebase -i HEAD~3
刪除包含您不再希望提交的行。
然後更新與新的分支所取得的進展發展:
$ git rebase new-branch
最後清理:
$ git branch -d new-branch
而不是想到它是「消除提交」,想的Git作爲樹/提交路徑和git分支作爲標籤,您可以沿分支/路徑移動。當你git commit
你是「增長」樹,並沿路徑進一步移動git分支標籤。你可以用gitx或者git log --oneline --abbrev-commit --all --graph --decorate
自由地想象這個。
你可以把你想要做的是在路上移動develop
回2提交(reset
)到「餐桌」,你分出新的提交,然後移動develop
下提交的不同的路徑是什麼(merge --ff-only
) :
$ git status # make sure you don't have an uncommitted changes
$ git checkout develop
$ git tag save # bookmark just in case
$ git branch bad-branch # alternate way to save a bookmark
$ # move develop back two commits, presumably back to where you branched off
$ git reset --hard HEAD^^
$ # move develop down the other branch of commits (marked by new-branch)
$ git merge --ff-only <new-branch>
您應該刷新gitx或每個命令後運行git log
命令來幫助你在視覺上發生了什麼。
--ff-only
選項只是一種安全措施,以確保您只是移動分支標籤,而不是實際合併到分支(路徑)。
使用'rebase'這可能是一種繞行的方式。如果較早的提交已經發布,那麼很好的方法是「還原」。如果舊的提交應該完全刪除,'reset --hard'(如[本答案](http://stackoverflow.com/a/1470452/1761499)中更詳細解釋的) –