Git Checkout (Română)

Această pagină este o examinare a comenzii git checkout. Acesta va acoperi exemple de utilizare și cazuri de margine. În termeni Git, un „checkout” este actul de a comuta între diferite versiuni ale unei entități țintă. Comanda git checkout operează pe trei entități distincte: fișiere, confirmări și ramuri. În plus față de definiția „checkout”, expresia „checkout” este frecvent utilizată pentru a implica actul executării comenzii git checkout. În subiectul Anularea modificărilor, am văzut cum git checkout poate fi utilizat pentru a vizualiza confirmări vechi. Accentul pentru majoritatea acestui document va fi operațiunile de verificare a sucursalelor.

Verificarea sucursalelor este similară cu verificarea validărilor și fișierelor vechi în care directorul de lucru este actualizat pentru a se potrivi cu ramura / revizia selectată; cu toate acestea, noile modificări sunt salvate în istoricul proiectului – adică nu este o operație numai în citire.

Verificarea ramurilor

git checkout vă permite să navigați între ramurile create de git branch. Verificarea unei ramuri actualizează fișierele din directorul de lucru pentru a se potrivi cu versiunea stocată în acea ramură și îi spune lui Git să înregistreze toate validările noi pe acea ramură. Gândiți-vă la asta ca la o modalitate de a selecta la ce linie de dezvoltare lucrați.

A avea o ramură dedicată pentru fiecare funcție nouă este o schimbare dramatică de la un flux de lucru tradițional SVN. Este ridicol de ușor să încercați noi experimente fără teama de a distruge funcționalitatea existentă și face posibilă lucrul la multe caracteristici fără legătură în același timp. În plus, ramurile facilitează, de asemenea, mai multe fluxuri de lucru colaborative.

Comanda git checkout poate fi confundată ocazional cu git clone. Diferența dintre cele două comenzi constă în faptul că clona funcționează pentru a prelua codul dintr-un depozit la distanță, alternativ, operațiunea de verificare funcționează pentru a comuta între versiunile de cod deja existente pe sistemul local.

Utilizare: ramuri existente

Presupunând că repoitul la care lucrați conține ramuri preexistente, puteți comuta între aceste ramuri utilizând git checkout. Pentru a afla ce sucursale sunt disponibile și care este numele actual al sucursalei, executați git branch.

 

Exemplul de mai sus arată cum să vizualizați o listă de ramuri disponibile executând git branch și comutați la o ramură specificată, în acest caz, feature_inprogress_branch.

Sucursale noi

Git checkout funcționează mână în mână cu git branch. Comanda git branch poate fi folosit pentru a crea o nouă ramură. Când doriți să începeți o nouă funcție, creați o nouă ramură off folosind git branch new_branch. Odată creat, puteți utiliza git checkout new_branch pentru a comuta la acea ramură. În plus, comanda git checkout acceptă un argument -b care acționează ca o metodă de comoditate care va crea noua ramură și va trece imediat la aceasta. Puteți lucra la mai multe funcții într-un singur depozit trecând între ele cu git checkout.

Exemplul de mai sus creează și verifică simultan . Opțiunea -b este un indicator de comoditate care îi spune lui Git să ruleze git branch înainte de a rula git checkout .

În mod implicit git checkout -b va baza new-branch de pe actual HEAD. Un parametru suplimentar opțional de ramură poate fi transmis către git checkout. În exemplul de mai sus, este trecut, care apoi bazează new-branch pe existing-branch în loc de actualul HEAD.

Comutarea ramurilor

Comutarea ramurilor este o operație simplă. Execuția următoare va indica HEAD către vârful .

Git urmărește un istoric al operațiunilor de checkout în reflog. Puteți executa git reflog pentru a vizualiza istoricul.

Git Checkout a Remote Branch

Când colaborați cu o echipă, este obișnuit să utilizați telecomanda depozite. Aceste depozite pot fi găzduite și partajate sau pot fi o copie locală a altui coleg. Fiecare depozit la distanță va conține propriul set de ramuri. Pentru a efectua o verificare a unei ramuri la distanță, trebuie să preluați mai întâi conținutul ramurii.

În versiunile moderne de Git, puteți să verificați ramura la distanță ca o ramură locală.

Versiunile mai vechi ale Git necesită crearea unei noi ramuri bazate pe remote.

În plus, puteți să verificați o nouă ramură locală și să o resetați la ultima comitere a ramurilor la distanță.

 

HEADS detașate

Acum că am văzut cele trei utilizări principale ale git checkout pe ramuri, este important să discutăm "detached HEAD”. Amintiți-vă că HEAD este modul lui Git de a se referi la instantaneul curent. Pe plan intern, comanda div> pur și simplu actualizează HEAD pentru a indica fie ramura specificată, fie comitere. Când indică o ramură, Git nu se plânge, dar când verificați o comitere, comută într-o stare "detached HEAD”.

Acesta este un avertisment care vă spune că tot ceea ce faceți este „detașat” de restul dezvoltării proiectului dvs. Dacă ar trebui să înceapă să dezvolte o caracteristică în timp ce se afla într-o stare detașată HEAD, nu ar exista nicio ramură care să vă permită să reveniți o it. Când verificați inevitabil o altă ramură (de exemplu, pentru a vă îmbina caracteristica), nu ar exista nicio modalitate de a vă referi la caracteristică:

Ideea este, dezvoltarea dvs. ar trebui să aibă loc întotdeauna pe o ramură – niciodată pe un HEAD detașat. Acest lucru vă asigură că aveți întotdeauna o referință la noile dvs. angajamente. Cu toate acestea, dacă te uiți doar la un commit vechi, nu contează cu adevărat dacă te afli într-o stare detașată HEAD sau nu.

Rezumat

Această pagină s-a axat pe utilizarea comenzii git checkout la schimbarea ramurilor. În rezumat, git checkout, atunci când este utilizat pe ramuri, modifică ținta ref. Poate fi folosit pentru a crea ramuri, pentru a schimba ramuri și pentru a verifica ramuri la distanță. Comanda git checkout este un instrument esențial pentru operația Git standard. Este o contrapartidă pentru git merge. Comenzile git checkout și git merge sunt instrumente esențiale pentru activarea git workflows.

Write a Comment

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *