[英]Git rebase with local feature branch
尚未找到我的具體案例的答案,也無法針對現有案例提出解決方案。
因此,我有一個使用兩個遠程分支的存儲庫:
master
dev
在我的計算機上,它們與兩個本地分支同步,而我還有另一個本地分支,但未與遠程同步:
master -> origin master
dev -> origin dev
feature
現在,首選的工作流程將是在本地要素分支上開發,如果完成,則提交並推送到origin dev 。 如果被接受,則隨后集成到母版中 。 這樣,兩個分支應該或多或少地相同並且是最新的。 但是,現在我面臨以下情況:
master ...o=o=o=o=o=o=o=o=o=o=o=o
|
dev ...o=o=o=o=o
|
feature ...o=o=o=o=o=o
在散文中: Master是dev之前的9個提交(我的一個同事直接推到master上), dev是master之前的2個提交,本地功能分支是dev之前的1個提交,而dev和feature都缺少提交來自大師 。
如何在不中斷歷史的情況下立即回到正軌?
提前致謝!
RomainVALERI解決方案沒問題,就像他寫的那樣:“看起來不太漂亮”。 您可以使用變基。 謝謝您的基准調整,您的歷史記錄會更加清晰。
git checkout dev
git rebase master
--> resolve potential conflicts
git checkout feature
git rebase dev
--> resolve potential conflicts
您的情況現在看起來像這樣(我將提交更改為“ m”和“ n”以更好地顯示重新設置的工作原理):
master ...o=o=o=m=m=m=m=m=m=m=m=m
|
dev ...o=o=o=d=d
重新設置基准后,分支將如下所示:
master ...o=o=o=m=m=m=m=m=m=m=m=m
|
dev ...o=o=o=m=m=m=m=m=m=m=m=m=d=d
Git將倒退未推送的提交(名為d)到頂部。
“ M”提交將保持不變,具有相同的sha-1,但“ d”將保持不變。
我首先合並master
到dev
和解決潛在的沖突得到dev
了最新的,然后合並dev
到feature
到同樣的效果。
在這一點上, feature
是“最高級”的技巧,並且可以很容易地合並回來: feature
>>> dev
然后是dev
>>> master
。
再說一次,您似乎更喜歡將rebase策略用於您的repo,如果是這樣,我的解決方案將看起來不那么漂亮。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.