我有Git master和dev分支。在嘗試將我的開發分支合併到我的主分支的過程中,我無意中做了一些錯誤,現在看起來主控已經搞亂了。我知道我的開發分支是好的,我不希望發生任何事情,所以我試圖用我的開發分支替換我的主分支。如果我可以保留我的主提交日誌條目,但是我可以丟失它們,只要我可以保留dev中的所有內容即可。我試圖實施這個Stackoverflow question中描述的解決方案,但他們不工作。下面是我所做的:無法用dev分支覆蓋Git master分支
$ git checkout dev
$ git branch -f master dev
$ git checkout master
Switched to branch 'master'
Your branch is behind 'origin/master' by 4 commits and can be fast-forward.
(use "git pull" to update your local branch)
如果我那麼做「混帳拉」,主分支不再包含Dev的變化和Git告訴我,我的分支上最新與「產地/主」。現在我該怎麼做?這是如何覆蓋主開發? Master不包含開發變更。如果我現在做「git merge --no-ff dev」,Git說「已經是最新的」。
我也試圖這樣做,以實現第二個答案如下:
$ git checkout dev
$ git merge -s ours --no-commit master
Already up-to-date.
% git commit
On branch dev
Your branch is up-to-date with 'origin/dev'.
nothing to commit, working tree clean
$ git checkout master
Your branch is behind 'origin/master' by 4 commits and can be fast-forward.
(use "git pull" to update your local branch)
正如你所看到的,這需要我馬上回我在那裏當我試圖實施第一個解決方案。我完全困惑。我如何用我的開發分支覆蓋我的主分支?
閱讀關於git reflog。 Git在如何恢復到不同的「動作」方面非常靈活。 –
您可以使用像gitk這樣的圖形存儲庫瀏覽器來了解情況。 'gitk'還允許您通過首先檢出該分支,然後右鍵單擊所需的提交併選擇'Reset to here',將分支指針移動到您喜歡的任何提交。 –
mkrieger1
從「狗狗」獲取幫助:'git log --all --decorate --oneline --graph'(** a ** ll ** d ** ecorate ** o ** neline ** g ** raph = adog)。或者,使用圖形瀏覽器,如@ mkrieger1建議的那樣。很顯然,問題的部分原因是您的上游存儲庫('origin/*')提供了您試圖從歷史記錄中「編輯」的提交內容,但尚不清楚您的其他情況。 – torek