This shows you the differences between two versions of the page.
uso:laboratoare:laborator-08:git-first-commits [2022/11/23 01:28] liza_elena.babu created |
uso:laboratoare:laborator-08:git-first-commits [2023/11/16 22:52] (current) mihai.pacuraru [Crearea primului commit] fix internal links |
||
---|---|---|---|
Line 15: | Line 15: | ||
Git se ocupă de păstrarea și gestiunea istoricului repository-ului nostru prin păstrarea listei de commituri făcute. Adică Git păstrează un istoric de versiuni al proiectului. | Git se ocupă de păstrarea și gestiunea istoricului repository-ului nostru prin păstrarea listei de commituri făcute. Adică Git păstrează un istoric de versiuni al proiectului. | ||
- | |||
- | Note | ||
Line 26: | Line 24: | ||
- | În următoarele secțiuni vom lucra în repository-ul ''%%array-sorting-algorithms%%'' creat în secțiunea ''%%app_dev_git_intro%%''. Vom crea, pas cu pas, un proiect software scris în limbajul de programare C, care conține mai mulți algoritmi de sortare a unui vector de elemente întregi. | + | În următoarele secțiuni vom lucra în repository-ul ''%%array-sorting-algorithms%%'' creat în secțiunea ''[[:uso:laboratoare:laborator-08#introducere_in_git_si_github|Introducere în Git și GitHub]]''. Vom crea, pas cu pas, un proiect software scris în limbajul de programare C, care conține mai mulți algoritmi de sortare a unui vector de elemente întregi. |
Punctual, în această secțiune, vom crea fișierul ''%%README%%'' al proiectului și scheletul de cod pentru algoritmii de sortare **Bubble Sort**, **Merge Sort** și **Radix Sort**. Vom crea commituri în repository-ul local pentru fiecare schimbare, după care vom publica commiturile astfel încât schimbările să fie vizibile și pe GitHub, în repository-ul remote. | Punctual, în această secțiune, vom crea fișierul ''%%README%%'' al proiectului și scheletul de cod pentru algoritmii de sortare **Bubble Sort**, **Merge Sort** și **Radix Sort**. Vom crea commituri în repository-ul local pentru fiecare schimbare, după care vom publica commiturile astfel încât schimbările să fie vizibile și pe GitHub, în repository-ul remote. | ||
Line 44: | Line 42: | ||
./ ../ .git/ README.md | ./ ../ .git/ README.md | ||
</code> | </code> | ||
- | Note | ||
- | |||
+ | <note> | ||
Caracterul ''%%#%%'' din fața textului ''%%Sorting Algorithms for Beginners%%'' are rol de a formata textul sub formă de titlu. Nu intrăm în mai multe detalii aici pentru că nu face obiectul cărții. | Caracterul ''%%#%%'' din fața textului ''%%Sorting Algorithms for Beginners%%'' are rol de a formata textul sub formă de titlu. Nu intrăm în mai multe detalii aici pentru că nu face obiectul cărții. | ||
+ | </note> | ||
Folosim extensia ''%%.md%%'' care semnalează un fișier de tip [[https://www.markdownguide.org|Markdown]]. Facem acest lucru deoarece pe GitHub fișierele ''%%README%%'' sunt afișate în format Markdown. Acest format este simplu de înțeles, însă nu face obiectul acestei cărți, deci nu vom insista pe înțelegerea lui. | Folosim extensia ''%%.md%%'' care semnalează un fișier de tip [[https://www.markdownguide.org|Markdown]]. Facem acest lucru deoarece pe GitHub fișierele ''%%README%%'' sunt afișate în format Markdown. Acest format este simplu de înțeles, însă nu face obiectul acestei cărți, deci nu vom insista pe înțelegerea lui. | ||
Line 58: | Line 56: | ||
Pașii creării unui commit sunt următorii: | Pașii creării unui commit sunt următorii: | ||
- | - Verificăm repository-ului. Cu alte cuvinte, verificăm ce modificări au fost făcute în repository de la ultimul commit. | + | - Verificăm repository-ul. Cu alte cuvinte, verificăm ce modificări au fost făcute în repository de la ultimul commit. |
- Adăugăm fișierele pe care vrem să le împachetăm într-un commit în **staging area**, adică în lista de fișiere pe care Git le organizează. | - Adăugăm fișierele pe care vrem să le împachetăm într-un commit în **staging area**, adică în lista de fișiere pe care Git le organizează. | ||
- Alegem un mesaj de commit. Creăm commitul. | - Alegem un mesaj de commit. Creăm commitul. | ||
Line 82: | Line 80: | ||
README.md | README.md | ||
</code> | </code> | ||
- | Prima linie afișată ''%%On branch master%%'' se referă la branch-ul ''%%master%%'' local. Vom discuta în secțiunea ''%%app_dev_branches%%'' despre branch-uri. | + | Prima linie afișată ''%%On branch master%%'' se referă la branch-ul ''%%master%%'' local. Vom discuta în secțiunea ''[[:uso:laboratoare:laborator-08#lucrul_pe_branch-uri | Lucrul pe branch-uri]]'' despre branch-uri. |
A doua linie afișată ''%%No commits yet%%'' ne spune că nu am făcut până acum niciun commit, adică am pornit de la un repository gol. | A doua linie afișată ''%%No commits yet%%'' ne spune că nu am făcut până acum niciun commit, adică am pornit de la un repository gol. | ||
Line 136: | Line 134: | ||
{{:uso:github-create-new-commit.gif?600|}} | {{:uso:github-create-new-commit.gif?600|}} | ||
- | Mai sus am creat un commit cu fișierul ''%%bubble-sort.c%%'' urmând pași similari cu cei din secțiunea ''%%app_dev_local_commit%%'': | ||
- | |||
- | <code bash> | ||
- | student@uso:~/array-sorting-algorithms$ git status | ||
- | (...) | ||
- | student@uso:~/array-sorting-algorithms$ git add bubble-sort.c | ||
- | student@uso:~/array-sorting-algorithms$ git status | ||
- | (...) | ||
- | student@uso:~/array-sorting-algorithms$ git commit -m "Add Bubble Sort skeleton" | ||
- | (...) | ||
- | </code> | ||
Conținutul fișierului ''%%bubble-sort.c%%'' este: | Conținutul fișierului ''%%bubble-sort.c%%'' este: | ||
Line 161: | Line 148: | ||
return 0; | return 0; | ||
} | } | ||
+ | </code> | ||
+ | |||
+ | |||
+ | Mai sus am creat un commit cu fișierul ''%%bubble-sort.c%%'' urmând pași similari cu cei din secțiunea ''[[:uso:laboratoare:laborator-08#crearea_primului_commit| Crearea primului commit]]'': | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~/array-sorting-algorithms$ git status | ||
+ | (...) | ||
+ | student@uso:~/array-sorting-algorithms$ git add bubble-sort.c | ||
+ | student@uso:~/array-sorting-algorithms$ git status | ||
+ | (...) | ||
+ | student@uso:~/array-sorting-algorithms$ git commit -m "Add Bubble Sort skeleton" | ||
+ | (...) | ||
</code> | </code> | ||
=== Exerciții === | === Exerciții === | ||
Line 179: | Line 179: | ||
</code> | </code> | ||
- Creați un commit care să conțină fișierul ''%%radix-sort.c%%''. Folosiți următorul mesaj de commit: ''%%Add Radix Sort algorithm skeleton%%''. | - Creați un commit care să conțină fișierul ''%%radix-sort.c%%''. Folosiți următorul mesaj de commit: ''%%Add Radix Sort algorithm skeleton%%''. | ||
- | - Dați comanda de verificare ''%%git log%%''. Detaliem outputul comenzii ''%%git log%%'' în subsecțiunea ''%%app_dev_check_history%%''. | + | - Dați comanda de verificare ''%%git log%%''. Detaliem outputul comenzii ''%%git log%%'' în subsecțiunea ''[[:uso:laboratoare:laborator-08#verificarea_istoricului_de_commituri | Verificarea istoricului de commituri]]''. |
- Creați un nou fișier numit ''%%merge-sort.c%%'' cu următorul conținut: | - Creați un nou fișier numit ''%%merge-sort.c%%'' cu următorul conținut: | ||
<code c> | <code c> | ||
Line 221: | Line 221: | ||
student@uso:~/array-sorting-algorithms$ git commit -m "Update README with project explanation" | student@uso:~/array-sorting-algorithms$ git commit -m "Update README with project explanation" | ||
- | t explanation" | ||
[master 247b87f] Update README with project explanation | [master 247b87f] Update README with project explanation | ||
1 file changed, 1 insertion(+) | 1 file changed, 1 insertion(+) | ||
</code> | </code> | ||
- | Spre deosebire de secțiunea ''%%app_dev_create_new_commit%%'', unde comanda ''%%git status%%'' arăta că fișierul modificat (în acel caz, ''%%bubble-sort.c%%'') este nou (//new file//), acum comanda ''%%git status%%'' arată că fișierul modificat (în acest caz, ''%%README.md%%'') a fost modificat (//modified//). Deși apare această diferență în outputul comenzii ''%%git status%%'', pașii pentru crearea unui commit care conține un fișier nou sau unul deja existent (dar modificat) sunt aceiași. | + | Spre deosebire de secțiunea ''[[:uso:laboratoare:laborator-08#crearea_unui_nou_commit | Crearea unui nou commit]]'', unde comanda ''%%git status%%'' arăta că fișierul modificat (în acel caz, ''%%bubble-sort.c%%'') este nou (//new file//), acum comanda ''%%git status%%'' arată că fișierul modificat (în acest caz, ''%%README.md%%'') a fost modificat (//modified//). Deși apare această diferență în outputul comenzii ''%%git status%%'', pașii pentru crearea unui commit care conține un fișier nou sau unul deja existent (dar modificat) sunt aceiași. |
=== Exerciții === | === Exerciții === | ||
Line 274: | Line 273: | ||
Add README file | Add README file | ||
</code> | </code> | ||
- | Note | ||
+ | <note> | ||
Navigați prin outputul comenzii ''%%git log%%'' prin intermediul săgeților sus/jos. Apăsați tasta **q** când ați terminat de inspectat. | Navigați prin outputul comenzii ''%%git log%%'' prin intermediul săgeților sus/jos. Apăsați tasta **q** când ați terminat de inspectat. | ||
+ | </note> | ||
- | Note | + | <note> |
În cazul autorului acestui capitol, numele, prenumele și emailul sunt ''%%Liza Babu <lizababu@example.com>%%'', așa cum apare în exemplul de mai sus: ''%%Author: Liza Babu <lizababu@example.com>%%''. | În cazul autorului acestui capitol, numele, prenumele și emailul sunt ''%%Liza Babu <lizababu@example.com>%%'', așa cum apare în exemplul de mai sus: ''%%Author: Liza Babu <lizababu@example.com>%%''. | ||
+ | </note> | ||
Fiecare commit este identificat unic printr-un cod, numit **cod hash**((Codul hash este calculat ca o sumă de control [[https://en.wikipedia.org/wiki/SHA-1|SHA-1]] a conținutului commitului. | Fiecare commit este identificat unic printr-un cod, numit **cod hash**((Codul hash este calculat ca o sumă de control [[https://en.wikipedia.org/wiki/SHA-1|SHA-1]] a conținutului commitului. | ||
Line 294: | Line 294: | ||
Vrem să publicăm pe GitHub toate schimbările făcute, pentru a fi vizibile și altor colaboratori ai proiectului. Publicăm commitul folosind comanda ''%%git push%%'': | Vrem să publicăm pe GitHub toate schimbările făcute, pentru a fi vizibile și altor colaboratori ai proiectului. Publicăm commitul folosind comanda ''%%git push%%'': | ||
+ | |||
+ | <note warning> | ||
+ | Pentru a putea da ''git push'' aveți nevoie de un token de acces pe care îl veți folosi în locul parolei. Urmăriți tutorialul de [[https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token#creating-a-personal-access-token-classic|aici]] pentru crearea unui token. | ||
+ | |||
+ | **Atenție!** Rețineți token-ul deoarece acesta este afișat o singură dată. | ||
+ | </note> | ||
<code > | <code > | ||
Line 306: | Line 312: | ||
* [new branch] master -> master | * [new branch] master -> master | ||
</code> | </code> | ||
- | În felul acesta commiturile locale au fost publicate ("împinse", //push//) din repository-ul local în repository-ul remote identificat de ''%%origin%%''. Commiturile locale se aflau pe branch-ul **master** din repository-ul **local** și au fost publicate tot în branch-ul **master** al repository-ului **origin**. Vorbim despre **branch-uri** în secțiunea ''%%app_dev_branches%%''. | + | În felul acesta commiturile locale au fost publicate ("împinse", //push//) din repository-ul local în repository-ul remote identificat de ''%%origin%%''. Commiturile locale se aflau pe branch-ul **master** din repository-ul **local** și au fost publicate tot în branch-ul **master** al repository-ului **origin**. Vorbim despre **branch-uri** în secțiunea ''[[:uso:laboratoare:laborator-08#lucrul_pe_branch-uri | Lucrul pe branch-uri]]''. |
Ca să verificăm publicarea commiturilor, folosim interfața GitHub: | Ca să verificăm publicarea commiturilor, folosim interfața GitHub: | ||
- | {{./img/GitHub-publish-commits.png}} | + | {{:uso:laboratoare:laborator-04:github-publish-commits.png?700}} |
+ | |||
===== Obținerea commiturilor din repository-ul remote ===== | ===== Obținerea commiturilor din repository-ul remote ===== |