Se afișează postările cu eticheta git. Afișați toate postările
Se afișează postările cu eticheta git. Afișați toate postările
[git] Anularea primului (și ultimului) commit fără pierderea modificărilor din directorul de lucru
Dacă ai un depozit git nou, faci un commit, apoi îți dai seama că în commit ai adăugat un fișier care nu trebuia adăugat, încerci să folosești comanda „git reset --soft HEAD^1” dar nu funcționează deoarece înainte de commit-ul HEAD nu mai există nici un commit. Singura soluție pe care am găsit-o este să să șterg directorul „.git” din depozit și să recreez depozitul git cu remote-ul potrivit, făcând o copie a fișierelor din directorul de lucru. Sigur, acest lucru funcționează doar când primul commit nu a fost trimis pe server cu un „git push”. Cunoașteți o altă soluție? Dacă da, vă rog să scrieți un comentariu.
Introducere în Git
Ce este Git?
Un sistem de gestionare a versiunilor fișierelor dintr-un dosar (numit și folder sau director). Altfel spus, un program care înregistrează fiecare modificare dintr-un dosar de-a lungul timpului, astfel încât utilizatorii acelui dosar pot să se întoarcă în orice punct din istoria dosarului sau pot analiza evoluția lui de-a lungul timpului. O funcție foarte importantă a Git este cea de „ramuri”, prin care istoria unui dosar poate evolua concomitent în mod diferit în mai multe „ramuri” (create cu „git checkout -b” sau cu „git branch”), și într-un moment ales acele ramuri pot fi unificate (cu comanda „git merge”) Ceea ce face Git cu adevărat folositor este funcția de „remote”-uri, adică servere pe care git încarcă întreaga istorie a unui dosar permițând colaborarea mai multor utilizatori asupra aceluiași dosar. Exemple de servicii care folosesc Git pentru a permite colaborarea utilizatorilor asupra unor proiecte sunt GitHub și BitBucket. GitHub este cel mai popular, dar BitBucket permite crearea unui număr nelimitat de depozite Git private.
Cum se instalează Git?
Pe sistemele Linux care folosesc managerul de pachete apt-get (inclusiv distribuția Linux Ubuntu), Git se instalează cu comanda „sudo apt-get install git”. Pe Windows, Git se instalează folosind programul executabil de instalare de pe site-ul Git și în funcție de opțiunile alese în timpul instalării va fi utilizarea ulterioară Git: fie veți putea utiliza Git în orice fereastră Command Prompt, fie veți putea utiliza Git doar din programul Git Shell.
Cum se folosește Git?
Odată instalat Git poate fi folosit prin comenzile în linia de comandă (cu alte cuvinte în terminal) pe care le oferă. Există însă și programe cu interfață grafică pentru utilizator care fac utilizarea Git mai ușoară în unele cazuri, de exemplu, SourceTree și GitHub for Desktop (ambele compatibile cu Windows 7 și versiuni mai târzii de Windows și cu OS X 10.9 și versiuni mai târzii de OS X), dar care nu fac obiectul acestui articol.
Trecem în revistă câteva comenzi mai importante (care se rulează din directorul în care se dorește urmărirea modificărilor fișierelor, director în care se intră cu ajutorul comenzii „cd”).
În final, închei cu fluxul de lucru Git, tradus de aici:
1. modifici fișierele din directorul de lucru (depozitul Git);
2. „montezi” (în engleză „to stage”) fișierele, adăugând instantanee ale lor în aria de montare („staging area”);
3. faci un commit, care ia fișierele așa cum sunt ele în aria de montare și stochează acel instantaneu permanent în directorul Git („.git”).
Unde pot afla mai multe despre Git și unde pot cere ajutor?
Documentația oficială Git este extraordinar de bună, dar este în limba engleză. Dacă preferați limba română, cred că vi se va răspunde cu plăcere pe forumul Softpedia. Dacă aveți cunoștințe medii de limbă engleză puteți cere ajutorul pe site-uri precum StackOverflow.
Va urma.
Un sistem de gestionare a versiunilor fișierelor dintr-un dosar (numit și folder sau director). Altfel spus, un program care înregistrează fiecare modificare dintr-un dosar de-a lungul timpului, astfel încât utilizatorii acelui dosar pot să se întoarcă în orice punct din istoria dosarului sau pot analiza evoluția lui de-a lungul timpului. O funcție foarte importantă a Git este cea de „ramuri”, prin care istoria unui dosar poate evolua concomitent în mod diferit în mai multe „ramuri” (create cu „git checkout -b” sau cu „git branch”), și într-un moment ales acele ramuri pot fi unificate (cu comanda „git merge”) Ceea ce face Git cu adevărat folositor este funcția de „remote”-uri, adică servere pe care git încarcă întreaga istorie a unui dosar permițând colaborarea mai multor utilizatori asupra aceluiași dosar. Exemple de servicii care folosesc Git pentru a permite colaborarea utilizatorilor asupra unor proiecte sunt GitHub și BitBucket. GitHub este cel mai popular, dar BitBucket permite crearea unui număr nelimitat de depozite Git private.
Cum se instalează Git?
Pe sistemele Linux care folosesc managerul de pachete apt-get (inclusiv distribuția Linux Ubuntu), Git se instalează cu comanda „sudo apt-get install git”. Pe Windows, Git se instalează folosind programul executabil de instalare de pe site-ul Git și în funcție de opțiunile alese în timpul instalării va fi utilizarea ulterioară Git: fie veți putea utiliza Git în orice fereastră Command Prompt, fie veți putea utiliza Git doar din programul Git Shell.
Cum se folosește Git?
Odată instalat Git poate fi folosit prin comenzile în linia de comandă (cu alte cuvinte în terminal) pe care le oferă. Există însă și programe cu interfață grafică pentru utilizator care fac utilizarea Git mai ușoară în unele cazuri, de exemplu, SourceTree și GitHub for Desktop (ambele compatibile cu Windows 7 și versiuni mai târzii de Windows și cu OS X 10.9 și versiuni mai târzii de OS X), dar care nu fac obiectul acestui articol.
Trecem în revistă câteva comenzi mai importante (care se rulează din directorul în care se dorește urmărirea modificărilor fișierelor, director în care se intră cu ajutorul comenzii „cd”).
git initAceastă comandă transformă directorul curent într-un depozit Git, indiferent dacă directorul curent este gol sau nu. Această comandă nu este influențată de conținutul directorului și nu afectează conținutul directorului decât că practic, această transformare constă doar în crearea directorului (ascuns pe sistemele Linux) „.git” în interiorul directorului curent. Acest dosar conține informații folosite în mod intern de Git pentru gestiunea versiunilor dosarului.
git add XAceastă comandă marchează fișierele sau dosarele X aflate în interiorul dosarului depozitului Git ca făcând parte din „staging area”. Aceste fișiere vor fi înregistrate în istoria dosarului la următoarea rulare a comenzii „git commit”. Această operațiune nu are sens decât dacă ați efectuat modificări asupra fișierelor/subdosarelor X de la ultimul commit, sau de la crearea depozitului git (în cazul în care nu există încă niciun commit), sau X reprezintă fișiere noi care până acum nu au fost adăugate în depozit. Ne putem imagina „staging area” ca pe un coș folosit de un om pentru a culege merele (schimbările din directorul de lucru, directorul depozitului) dintr-o livadă. Există mai multe coșuri pline puse unul lângă altul care formează istoria depozitului.
git commit -m "Test"Această comandă înregistrează modificările adăugate cu „git add” în „staging area” ca o nouă versiune a dosarului în istoria dosarului și apoi golește „staging area” pregătind-o pentru noi modificări. În loc de „Test” se poate scrie orice șir de caractere care reprezintă o descriere a ultimelor modificări ce vor fi înregistrate, iar dacă se dorește chiar introducerea unui caracter „"” în interiorul mesajului de commit, se tastează „\"” în loc de „"”. Istoria dosarului poate fi văzută rulând comanda „git log”.
git logAceastă comandă afișează jurnalul commit-urilor din depozitul directorului curent. O versiune a acestei comenzi care afișează jurnalul mai frumos în opinia mea este „git log --graph --color --decorate --all --date=relative”. Dacă vă place mai mult această afișare, o puteți folosi mai ușor printr-un alias creat cu următoarea comandă: „git config --global alias.mylog "log --graph --color --decorate --all --date=relative"”. Astfel veți putea folosi pentru aceeași funcție comanda „git mylog”.
În final, închei cu fluxul de lucru Git, tradus de aici:
1. modifici fișierele din directorul de lucru (depozitul Git);
2. „montezi” (în engleză „to stage”) fișierele, adăugând instantanee ale lor în aria de montare („staging area”);
3. faci un commit, care ia fișierele așa cum sunt ele în aria de montare și stochează acel instantaneu permanent în directorul Git („.git”).
Unde pot afla mai multe despre Git și unde pot cere ajutor?
Documentația oficială Git este extraordinar de bună, dar este în limba engleză. Dacă preferați limba română, cred că vi se va răspunde cu plăcere pe forumul Softpedia. Dacă aveți cunoștințe medii de limbă engleză puteți cere ajutorul pe site-uri precum StackOverflow.
Va urma.
Cum modifici mesajele de commit ale unor commit-uri Git din trecut
1. Cum schimbi mesajul de commit al ultimului commit
În următorul mod poți preciza noul mesaj de commit în linia de comandă:
Această metodă funcționează doar dacă nu s-a făcut push la commit-urile respective sau dacă este vorba doar despre un depozit git local fără remote-uri.
În următorul mod poți preciza noul mesaj de commit în linia de comandă:
git commit –amend -m "Mesaj nou"În următorul mod se deschide un editor (de exemplu Vim) pentru editarea mesajului de commit anterior:
git commit –amend -e2. Cum schimbi mesajele de commit ale unor commit-uri din trecut (unul sau mai multe)
Această metodă funcționează doar dacă nu s-a făcut push la commit-urile respective sau dacă este vorba doar despre un depozit git local fără remote-uri.
git rebase -i X
unde X este ID-ul commit-ului aflat în cronologia commit-urilor chiar înainte de primul commit al cărui mesaj vrei să îl schimbi, și care se poate afla executând:
git logÎn loc de ID-ul commit-ului poate fi (și deseori e mai folositor) un reper de tipul HEAD, HEAD~1 (commit-ul dinaintea ultimului commit), HEAD~2 (commit-ul dinaintea penultimului commit) etc.
Această comandă (rebase) va deschide editorul de text configurat pentru asta (de exemplu Vim) cu o listă de commit-uri, câte unul pe fiecare rând, și la începutul fiecărui rând va fi precizată comanda „pick” care înseamnă că acel commit nu va dispărea în urma rebase-ului.
Commit-urilor cărora doriți să le schimbați mesajul de commit schimbați-le comanda „pick” în „reword”, salvați fișierul și ieșiți din editor.
După ieșirea din editor, pentru fiecare commit la care s-a setat comanda „reword” se va deschide iar editorul pe rând cu vechiul mesaj de commit și aveți posibilitatea de a scrie un alt mesaj de commit sau să îl modificați pe cel vechi.
Commit-urilor cărora doriți să le schimbați mesajul de commit schimbați-le comanda „pick” în „reword”, salvați fișierul și ieșiți din editor.
După ieșirea din editor, pentru fiecare commit la care s-a setat comanda „reword” se va deschide iar editorul pe rând cu vechiul mesaj de commit și aveți posibilitatea de a scrie un alt mesaj de commit sau să îl modificați pe cel vechi.
E important de menționat că rebase-ul va schimba ID-ul commit-urilor modificate deci trebuie făcut cu grijă când commit-urile se află și pe un server, deci nu sunt doar locale.
Dacă aveți întrebări sau sugestii, vă rog să scrieți comentarii mai jos.
Dacă aveți întrebări sau sugestii, vă rog să scrieți comentarii mai jos.
Abonați-vă la:
Postări (Atom)
-
Fragment din cartea Algoritmica C++ de Vlad Sebastian Ionescu, Eugen Laslo . Considerăm un vector A cu N elemente numere întregi...
-
1. Cum schimbi mesajul de commit al ultimului commit În următorul mod poți preciza noul mesaj de commit în linia de comandă: git commit ...
-
Fragment din cartea Algoritmica C++ de Vlad Sebastian Ionescu, Eugen Laslo . Am prezentat problema labirintului în cadrul secțiunii desp...

