Git Succinct înregistrarea modificărilor

Menținerea unei serii de revizuiri "sigure" a unui proiect reprezintă funcția de bază a oricărui sistem de control al versiunilor. Git realizează acest lucru prin înregistrare instantanee a unui proiect. După înregistrarea unui instantaneu, puteți să vă întoarceți și să vedeți versiuni vechi, să le restaurați și să experimentați fără teama de a distruge funcționalitatea existentă.

Utilizatorii SVN și CVS ar trebui să rețină că acest lucru este fundamental diferit de implementarea sistemului. Ambele programe înregistrează diferențe pentru fiecare fișier - o înregistrare incrementală a modificărilor dintr-un proiect. În contrast, instantaneele lui Git sunt tocmai așa-instantanee. Fiecare comitet conține versiunea completă a fiecărui fișier pe care îl conține. Acest lucru face Git incredibil de rapid, deoarece starea unui fișier nu trebuie să fie generată de fiecare dată când este cerut:


Înregistrarea instantaneelor ​​complete, nu diferențele între revizuiri

Acest capitol introduce fluxul de lucru de bază pentru crearea de instantanee utilizând directorul de lucru, zona de așteptare și istoricul dedicat. Acestea sunt componentele principale ale controlului reviziilor bazate pe Git.


Zona de așteptare

Zona de așteptare a Git vă oferă un loc pentru a organiza o comitet înainte de adăugarea acesteia în istoricul proiectului. înscenare este procesul de mutare a modificărilor de la directorul de lucru la instantaneu etapizat.


Componente implicate în efectuarea unei comiteri

Vă oferă posibilitatea de a alege și de a alege legate de se schimbă de la directorul de lucru, în loc să comită totul dintr-o dată. Aceasta înseamnă că puteți crea logic instantanee peste cronologic cele. Acesta este un avantaj pentru dezvoltatori, deoarece le permite separarea activităților de codificare de la activitățile de control al versiunilor. Când scrieți caracteristici, puteți uita de oprirea de a le comite în bucăți izolate. Apoi, când ați terminat cu sesiunea de codare, puteți separa modificările în cât mai multe angajamente pe care le doriți, prin intermediul scenei.

Pentru a adăuga fișiere noi sau modificate din directorul de lucru în zona de așteptare, utilizați următoarea comandă:

 adăugați git 

Pentru a șterge un fișier dintr-un proiect, trebuie să-l adăugați în zona de așteptare ca și un fișier nou sau modificat. Următoarea comandă va trece la ștergerea și oprirea urmăririi fișierului, dar nu va șterge fișierul din directorul de lucru:

 git rm -cached 

Inspectarea etapei

Vizualizarea stării depozitului dvs. este una dintre cele mai comune acțiuni din Git. Următoarea comandă afișează starea directorului de lucru și a zonei de așteptare:

 git status

Acest lucru va duce la un mesaj care seamănă cu următoarele (anumite secțiuni pot fi omise în funcție de starea depozitului dvs.):

 # Pe master-ul ramurii # Modificări care urmează a fi angajate: # # fișier nou: foobar.txt # # Modificări nesentate pentru comitere: # # modificate: foo.txt # # Fișiere neîntrerupte: # # bar.txt

Prima secțiune, "Modificările care urmează să fie angajate" este instantaneul dvs. etapizat. Dacă ar trebui să fugi git comite acum, doar aceste fișiere vor fi adăugate în istoricul proiectului. Se afișează următoarea secțiune pe șenile fișiere care nu vor fi incluse în următorul comitet. În cele din urmă, "Fișierele nedorite" conțin fișiere din directorul dvs. de lucru care nu au fost adăugate la depozit.

Generarea diferențelor

Dacă aveți nevoie de informații mai detaliate despre modificările din directorul de lucru sau din zona de așteptare, puteți genera un diff cu următoarea comandă:

 git diff

Aceasta scoate o diferență de la fiecare nestaditizat schimbați directorul de lucru. De asemenea, puteți genera o diferență între toate pus în scenă modificări cu --în cache steag:

 git diff - cache

Rețineți că istoricul proiectului este în afara scopului git status. Pentru a afișa instantanee angajate, veți avea nevoie git log.


Componentele din domeniul de aplicare al Directivei git status

încredințarile

Comitetele reprezintă fiecare versiune salvată a unui proiect, ceea ce le face unitatea atomică de control al versiunilor bazate pe Git. Fiecare comitet conține un instantaneu al proiectului, informațiile despre utilizator, data, un mesaj de comitet și un mesaj Suma de control SHA-1 din întregul său conținut:

 commit b650e3bd831aba05fa62d6f6d064e7ca02b5ee1b Autor: john  Data: Mier 11 Jan 00:45:10 2012 -0600 Câteva comite un mesaj

Acest sumă de control servește ca ID unic al unei comitete și înseamnă, de asemenea, că o comitet va fi nu să fie corupți sau modificați neintenționat fără ca Git să știe despre asta.

Deoarece zona de așteptare conține deja setul de modificări dorit, comiterea nu necesită implicarea din directorul de lucru.


Componente implicate în realizarea unui instantaneu

Pentru a comite instantaneu etapizat și a adăuga-l la istoricul ramurii actuale, executați următoarele:

 git comite

Veți fi prezentat cu un editor de text și vi se va solicita un "mesaj de comitet". Comunicările trebuie să aibă următoarea formă:

   

Git utilizează prima linie pentru formatarea jurnalului de ieșire, a mesajelor de e-mail, etc., așa că ar trebui să fie scurtă, descriind totuși întregul set de modificări. Dacă nu puteți găsi linia rezumativă, probabil înseamnă că comitetul dvs. conține prea multe schimbări care nu au legătură. Ar trebui să vă întoarceți și să le împărțiți în comitete distincte. Rezumatul ar trebui să fie urmat de o linie necompletată și de o descriere detaliată a modificărilor (de ex., De ce ați făcut modificările, cu ce număr de bilet corespunde).


Inspectarea comitetelor

Ca statutul unui depozit, vizualizarea istoricului său este una dintre cele mai frecvente sarcini în controlul versiunii Git. Puteți afișa comitetele actuale ale ramurii cu:

 git log

Avem acum doar două instrumente necesare pentru a inspecta fiecare componentă a unui depozit Git.


Rezultatul git status vs. git log

Acest lucru ne oferă, de asemenea, o grupare naturală de comenzi:

  • Stage / Director de lucru: adăugați git, git rm, git status
  • Istoricul angajat: git comite, git log

Configurări utile

Git oferă o multitudine de opțiuni de formatare pentru git log, dintre care câteva sunt incluse aici. Pentru a afișa fiecare comitere pe o singură linie, utilizați:

 git log - line

Sau, pentru a viza istoricul unui fișier individual în loc de întreaga repozitoriu, utilizați:

 git log - line 

Filtrarea ieșirii jurnalului este, de asemenea, foarte utilă odată ce istoria dvs. crește dincolo de o analiză a comitetelor. Puteți folosi următoarele pentru a afișa comitetele conținute în dar nu în . Ambele argumente pot fi un cod de comitet, un nume de ramură sau o etichetă:

 git log ... 

În cele din urmă, puteți afișa un diffstat al modificărilor din fiecare comitet. Acest lucru este util pentru a vedea ce fișiere au fost afectate de un comitet special.

 git log --stat

Pentru a vizualiza istoria, ați putea dori, de asemenea, să vă uitați la gitk comanda, care este de fapt un program separat dedicat ramurilor de grafica. Alerga Git ajutor gitk pentru detalii.


Etichetarea comenzilor

Etichetele sunt simple indicii pentru a comite, și sunt utile pentru marcarea unor revizuiri importante, cum ar fi versiuni publice. git tag comanda poate fi folosită pentru a crea o etichetă nouă:

 git tag -a v1.0 -m "Release stabilă"

-A opțiunea îi spune lui Git să creeze un adnotat , care vă permite să înregistrați un mesaj împreună cu el (specificat cu -m).

Rularea aceleiași comenzi fără argumente va afișa etichetele existente:

 git tag

Această lecție reprezintă un capitol din Git Succinct, o carte electronică gratuită de la echipa de la Syncfusion.

Cod