tony ganch
rebase git: comandă în filialele locale
Cea mai frecventă întrebare pe care am întâlni în conversații despre git: «De ce aveți nevoie de rebase și cum să-l folosească“?
Obiectivul principal al rebase - restabilirea ordinii.
Dacă face de multe ori o comit problemele apărute, iar apoi sunt șocați ce mizerie întâmplă în ramura - această echipă va deveni preferata ta.
Important! Rebase în valoare de a face numai dacă nu ați împinge modificările în sucursale la distanță.
Această operațiune suprascrie SHA (id) se angajează, astfel încât alți utilizatori nu vor fi atât de ușor să mosor modificările.
Să vedem cum puteți „perie“ poveste.
Mesajul de la commit
E o poveste adevărată. Eugene, Buna ziua!Să presupunem că avem un depozit X cu o astfel de istorie:
Dacă trebuie să corectați nu ultimul comite (sau mai multe), vom reformula.
Pentru a începe pentru a defini ceea ce doriți să editați un commit.
În cazul nostru este prima, a doua și a patra.
Vă rugăm să înceapă git rebase, luând ca bază ultimele 4 se angajează:
Diferențele între HEAD
HEAD ^ și pot fi citite pe git-scm.com.
Notă ordine inversă: de sus pentru a merge vechi de jos commit - proaspete.
Înlocuiți în alegerea dreptul de a comite r sau reformuleze:
Și la rândul său, dreptul fiecărui mesaj.
Ca rezultat, obținem următoarea poveste:
Eliminați comite inutile
Se întâmplă că ați făcut ceva de lucru, dar nu devine necesar.
Sau vrei să facă un cuplu de comiterile a făcut în urmă cu o săptămână, într-un fir separat, și se scoate din curent.
Ultimele N încredințarile ușor de îndepărtat cu o resetare.
De exemplu, pentru a elimina ultima comite:
Șterge 7:
Dacă se dorește commit deparazitat drum între celelalte, executați rebase:
Și șterge doar linie inutile (de exemplu, ne luăm foarte sus):
Combinați mai multe commit într-un singur
Am nevoie de un script care, atunci când am face un Git comite, se va utiliza în mod automat comite mesajul anterior, sufix cu „real“.
Cu siguranță ați trecut prin asta:
Se pare că a corectat o eroare, dar nu a găsit ceva nou.
Și din nou.
Și din nou.
Pe de o parte, puteți lăsa totul așa cum este.
Cu toate acestea, în cazul în care va trebui să se rostogolească înapoi modificările care trebuie să se rostogolească înapoi pachetul întreg se angajează în loc de unul.
Iar povestea nu arata foarte curat.
git commit --amend - o echipă bună, dar numai pentru o actualizare mai târziu comite.
rebase. la rândul său, este capabil să combine mai multe comiterilor, chiar dacă acestea nu se succed în ordine.
De exemplu, face 6 comiterilor 2 este destul de simplu.
Porniți rebase:
Dacă vă întrebați smordzhit git commit, în mod implicit, va adera la cea anterioară.
Din moment ce nu ne place, modificați mai întâi prioritizarea commit.
Pur și simplu schimba liniile:
Următorul pas este similar cu redenumirea: înlocuim murături la f (fixup) sau s (suc de fructe), în funcție de rezultatul dorit.
Dacă ați ales suc de fructe. GIT vă va oferi o altă oportunitate de a edita mesajul la final comite.
Rezultatul este o poveste frumoasă:
automatiza fuziunea
Procesul de unificare poate fi simplificată.
Să presupunem că povestea ta este acum compusă din două comiterile:
Ați corectat o serie de fișiere și doriți să injecteze aceste modificări să se angajeze fixe # 4.
Ca să nu se angajeze în reglarea manuală, puteți face acest lucru:
123456, în acest caz, = SHA comite, pe care vrem să infuzeze schimbări.
Git creează un mesaj cu un comite fixup! Fix # 4.
Să facem câteva modificări, dar de data aceasta se angajeze pregăti suc de fructe:
Când totul este gata, începe rebase:
A se vedea: git commit te pune totul în ordinea corectă și, în același timp, a înlocuit steagul alege pe dreapta.
Istoria va avea ca rezultat net aceeași:
Split, comite câteva
Opusul situației anterioare: ați făcut o grămadă de schimbări, închise 8 Taxco, dar au aruncat totul pentru a comite 2:
roll-le în caz de necesitate, va fi dificil - prea multe dependențe.
Și revyueru cod nu invidie.
Soluția este simplă: se angajează părți logice:
Menționăm că doresc să se angajeze rupe, editare cuvântul:
Git aborts o comite Fix # 1. și se va opri.
În continuare, avem libertate deplină de acțiune.
Abandonarea se angajează:
Opțional, adăugați fișierele asociate cu prima sarcină:
Efectuarea primul comite:
Se repetă la gust:
În cazul în care rezultatul ne satisface, reluându rebase:
Repetați acești pași de mai multe ori, puteți obține cele mai bune de un istoric detaliat:
concluzie
Rebase - un instrument minunat și puternic.
Principalul lucru - nu-ți fie frică.
tehnicile descrise mai sus vor ajuta să faceți povestea ușor de înțeles, dar în căutarea ei pentru lumina.
Încercați să le utilizați înainte de următoarea shove.