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
.