Radi by sme premenili repozitár svn na git. Teraz by som chcel urobiť nejaké vyčistenie na prevedenej vetve:
A1-A2-A3--A6-A7-----A11-A12-An
/
`------B1-B2---B25´
B1 je zlúčený záväzok importovať zmeny A3 do A7 do vetvy B. Lepším spôsobom by mohlo byť začatie od A7 a odstránenie zlúčeného potvrdenia B1.
A1--A6-A7-A8-A9----A12-An
/
`B2--B25´
Skúsil som rebázu na vetve B až A, ale výsledok je už rovnaký.
aktualizovať Ako nedorozumenie proti prúdu neexistuje na A žiadna sledovaná vzdialená vetva. (svn pobočky a značky boli odstránené).
Názov som tiež aktualizoval
odpovede:
0 pre odpoveď č. 1Myslím, že ste na správnej ceste. Skúste nasledujúce zrevidovať svoje zmeny z vetvy B na špičku vetvy A:
git checkout A
git pull
git checkout B
git pull
git rebase A
<fix conflicts>
git push -f
0 pre odpoveď č. 2
Tecnický bod: Ak zmeníte históriu, vytvoria sa nové potvrdenia (budú mať nové hashe a ak je vaša história mena už zdieľaná s ostatnými vývojármi, musíte im povedať, aby prinútili aktualizovať svoje repo).
Popíšem spôsob transformácie:
# this :
A1-A2-A3--A6-A7-----A11-A12-An
/
`------B1-B2---B25´
# into this :
A1--A6-A7-A8-A9---A11-A"12-A"n
/
`B"2--B"25´
Záväzky týkajúce sa B
pobočkou budú nové záväzky, ako aj záväzky na internete A
vetva, začínajúca od merge in B
dopustiť.
Pre začiatočníkov by som navrhol pracovať na dočasných pobočkách:
# create branch "wipB" on commit B25 and switch to this new branch :
git checkout -b wipB B25
Ak chcete prehrať
B2, ..., B25
na vrchuA7
, môžete použiť
git rebase --onto <new_base> <upstream> <branch>
variantugit rebase
(doc tu):# note the `B1` : the commit mentionned as <upstream> is ommitted git rebase --onto A7 B1 wipB
obnoviť zlúčenie
A12
:# start a new "A" branch from A11 : git checkout -b wipA A11 # merge the new "B" branch : git merge wipB # once merge is resolved, you can compare with the original A12 to see # if this new merge commit has all the content you expect : git difftool -d wipA A12
prehrať
A13, .., An
na vrchuA"12
:git rebase --onto wipA A12 An