簡體   English   中英

使用本地功能分支重新構建Git

[英]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

在散文中: Masterdev之前的9個提交(我的一個同事直接推到master上), devmaster之前的2個提交,本地功能分支是dev之前的1個提交,而devfeature都缺少提交來自大師

如何在不中斷歷史的情況下立即回到正軌?

提前致謝!

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”將保持不變。

我首先合並masterdev和解決潛在的沖突得到dev了最新的,然后合並devfeature到同樣的效果。

在這一點上, feature是“最高級”的技巧,並且可以很容易地合並回來: feature >>> dev然后是dev >>> master

再說一次,您似乎更喜歡將rebase策略用於您的repo,如果是這樣,我的解決方案將看起來不那么漂亮。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM