cele Mai multe cod integrari întâmpla cu o unificare, dar, ocazional, un dezvoltator vrea pentru a obține lor de cod locale prins cu ramura de master printr-o schimbare de bază în loc. În acest exemplu, vom demonstra cum să git rebase o ramură de master în loc de a folosi comanda merge, în timp ce, de asemenea, subliniind impactul efectuării unei operații git rebase la master.
ce înseamnă git rebase to master?,
în acest tutorial, vom lua ramura numită develop și rebase-l pe vârful de master.
a dezvolta ramura s-a rupt de la maestru la a comite C, astfel încât ambele ramuri partaja fișiere a.html, b.html și c.html. Vedeți imaginea de mai jos pentru a vă ajuta să vizualizați acest lucru.
Deoarece ramura a avut loc, maestrul a adăugat comite D și E. Aceasta înseamnă stăpânul a două fișiere care dezvolta nu au, și anume d.html și e.html.,
Acesta este modul în depozitul Git arată înainte de un git de rebazare a stăpâni.mai mult, de la divizare, au existat două noi comiteri pe ramura dezvoltare, adăugând fișierele f.html și g.html. Acestea sunt fișiere pe care ramura de dezvoltare le are pe care ramura principală nu le are.
Acesta este modul în care GitLab depozit arata dupa git rebazare a stăpâni.,
Impactul Git rebazare
După un succes de a dezvolta ramura de master rebazare:
- fișiere în ramura de master nu se va schimba
- dezvolta ramura în plus, vor dobândi toate ramura de master este fișiere noi
- dezvolta stream este punctul de ramificație se va schimba.
- acesta va apărea ca și cum ramura dezvolta divizat după commit E pe ramura de master.
- înainte de rebase, ramura dezvoltare divizat de master la commit C.,
git rebase la master command sintaxa
operația de a efectua o git rebase la master este drept înainte. Pur și simplu adăugați la sfârșitul comenzii numele ramurii sursă și apoi numele ramurii la rebase. Pentru rebazare dezvolta la master la comanda este după cum urmează:
git rebase master develop
Avertisment: Există un git de rebazare pe comutator care, uneori, dezvoltatorii greșit de multe ori cred că au nevoie pentru a include cu rebazare comanda. Dacă faceți acest lucru, se va face ca angajamentele să fie discared și fișierele să fie pierdute., Nu faceți greșeala de a efectua o rebase git pe operație.
înainte de rebase, ramura dezvoltare avea doar cinci fișiere.
Fiecare ramură are cinci fișiere înainte de git rebazare să stăpânească funcționare.
după rebase Git la master, ramura dezvoltare are șapte fișiere. Și-a păstrat toate fișierele originale și a achiziționat două fișiere noi din vârful filialei master., Cu toate acestea, numărul de fișiere din ramura principală rămâne neschimbat.
După git rebazare a dezvolta de a stăpâni, de a dezvolta ramura dobândește toate de master fișiere.faptul că ramura principală nu a achiziționat niciun fișier de la ramura de dezvoltare aruncă adesea noi utilizatori Git, dar acesta este comportamentul așteptat. O rebase git nu se sincronizează între ramuri. Pur și simplu prinde o ramură cu ultimele schimbări de la alta.,
numărul de fișiere în a dezvolta creștere, după git rebazare a stăpâni.
procedați cu precauție
când apare o rebază Git, Istoricul comiterii depozitului este schimbat iremediabil. După rebase-ul din exemplul nostru, comitetelor F și G li se atribuie noi ID-uri de comitere, iar vechile ID-uri de comitere sunt eliminate. Din acest motiv, veți vedea adesea comiteri rebasate marcate ca F ‘și G’ pentru a sublinia faptul că au fost atribuite noi ID-uri de comitere.,
Dacă rebazare o ramură comună cu un alt producător și împinge modificările înapoi la GitHub sau GitLab, un coleg de producător va rula într-o varietate sau probleme atunci când încercați să trageți indexate depozit în mediul de dezvoltare locală. Comiterile pe care le au local vor fi dispărut pe telecomandă, iar sucursala de la distanță va avea un istoric de sucursală incompatibil. După cum vă puteți imagina, rebasarea unei sucursale partajate sau zdrobirea angajamentelor Git poate provoca havok.,
Rebazare la GitHub sau GitLab
de fapt, dacă te rebazare și să încerce să împingă la GitLab sau GitHub, serverul nu va permite aplicarea de a fi efectuate. Pentru a rebase la GitHub sau GitLab, un dezvoltator trebuie să adauge comutatorul-force la comanda git push pentru a obliga modificările să fie acceptate.
git push origin --force
Un GitLab sau GitHub rebazare împinge va fi respinsă dacă forțată.,
logica acceptată este de a git doar rebase să stăpânească ramuri locale la spațiul de lucru personal. În acest fel, comenzile dvs. de curățare Git nu afectează pe nimeni altcineva. Nu efectuați o rebase git pentru a stăpâni pe sucursalele partajate cu alți dezvoltatori. Un rebase pe master este bine, doar nu invers. În caz contrar, este posibil să rupeți operațiunile de construire și împingere sau tragere vor fi puse în stand-by, împiedicând dezvoltarea continuă și făcându-vă persona non grata cu restul dezvoltatorilor și echipei DevOps.