Controlul Versiunilor
Glosar:
Repository (repo): Locația centrală unde se păstrează versiunile fișierelor.
Repo Server: Serverul care găzduiește un repository.
Client: Calculatorul care se conectează la serverul repo și execută operațiuni gen checkout/add/remove/commit.
Working Copy: Copia locală (pe calculatorul client) a unui proiect, de obicei descărcată de pe repository.
Revision: O versiune a unui document. (v1, v2, v3...).
Trunk/Main: Directorul rădăcină de pe serverul repo.
Head: Cea mai nouă versiune din repository.
Add: Adaugă un fișier în repository, încarcă un fișier în repository.
Check out: Descarcă un fișier/proiect de pe repository.
Commit: Înregistrează o nouă versiune în repository a unui fișier (colecție de fișiere) modificat(ă).
Commit Message: Un mesaj asociat unei acțiuni commit care descrie schimbările făcute în noua versiune "commit-uită".
Changelog: O listă a versiunilor(commit-urilor) unui fișier/proiect de obicei însoțită de mesajele asociate fiecărui commit.
Diff: Afișează diferențele dintre două versiuni a unui fișier sau dintre fișierul modificat local (pe working copy) și o versiune de pe repository.
Update/Pull: O sincronizare a fișierelor din working copy cu ultima versiune descărcată de pe repository. Update-ul nu "urcă" nimic pe repository, doar aduce ultimele modificări de pe server;
Revert: Renunțarea la ultimele modificări (locale) făcute într-un fișier din working copy, și revenirea la ultima versiune aflată în repository sau la o versiune la alegere.
Branch: Creează o “copie” a unui fișier/proiect pentru modificări “în paralel” fără a afecta starea actuală a unui proiect.
Merge: Aplică ultimele modificări dintr-o versiune a unui fișier peste alt fișier (de obicei se întâmplă la “update” când se descarcă ultimele modificări de pe repository).
Conflict: Situația în care un “merge” nu se poate executa automat și modificările locale sunt în conflict cu modificările de pe repository.
Resolve: Rezolvarea (de obicei manuală) a conflictelor apărute într-un fișier după un merge.
Scurt ghid git (cu github.com)
Pasul de inițializare:
Descărcați fișierul shell din atașamentul paginii:
wget https://sites.google.com/site/besixtwofour/retele-intranet/laboratoare/controlul-versiunilor/init-the-git.sh
chmod +x init-the-git.sh
sh init-the-git.sh
Pasul 1:
După logarea pe site-ul github.com apasați
și alegeți un nume pentru noul vostru proiect.
Pasul 2:
Deschideți un Terminal (apăsați tasta Windows (
) apoi tastați "Terminal")
Pasul 3:
Creați un subdirector în directorul /home/student cu numele proiectului pe care l-ați ales la Pasul 1.
mkdir Proiect1
cd Proiect1/
Pasul 4:
Inițializați un nou proiect git:
git init
Initialized empty Git repository in /home/student/School/Proiect1/.git/
Pasul 5:
Creați și editați un nou fișier (sau mai multe fișiere) pentru noul vostru proiect:
touch README
gedit README
Pasul 6:
Verificați starea repository-ului git utilizând comanda git status:
git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# README
nothing added to commit but untracked files present (use "git add" to track)
Observați că fișierul README nu este încă adăugat la secțiunea "Tracked files", adică fișiere pentru care git va ține o evidență.
Pasul 7:
Adăugați fișierul nou creat in repository-ul git și verificați din nou starea repository-ului:
git add README
git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: README
#
Observați că fișierul nu se mai află în starea "Untracked". El este pregătit pentru primul "commit", adică prima înregistrare in repository-ul git al proiectului vostru.
Pasul 8:
Salvați modificările (commit) în repository-ul git:
git commit -m "Initial commit" README
[master (root-commit) 2621cd5] Initial commit
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 README
Pasul 9:
Agăugați o "originie", un repository din internet spre care veți trimite ultimele modificări, starea actuală a proiectului, etc. Acest repository "origin" se afla pe domeniul github.com.
Atenție: doar link-ul HTTP va funcționa în rețeaua laboratorului deoarece protocolul SSH nu este accesibil.
git remote add origin https://student@github.com/student/Proiect1.git
Normal după această operațiune nu urmează niciun mesaj de confirmare. Pentru a verifica adăugarea corectă folosiți:
git remote show origin
Password:
* remote origin
Fetch URL: https://student@github.com/student/Proiect1.git
Push URL: https://student@github.com/student/Proiect1.git
HEAD branch: (unknown)
Pasul 10:
Trimiteți ultimele modificări locale înspre repository-ul remote:
git push origin master
Password:
Counting objects: 3, done.
Writing objects: 100% (3/3), 244 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://student@github.com/student/Proiect1.git
* [new branch] master -> master
Pasul 11:
Verificați site-ul github.com apasănd butonul "Source"
Pasul 12:
Introduceți o nouă modificare în fișierul README și apoi verificați din nou starea repository-ului local:
git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: README
#
no changes added to commit (use "git add" and/or "git commit -a")
Verificați modificările făcute utilizând comanda git diff:
git diff README
diff --git a/README b/README
index bccdfbd..b018eec 100644
--- a/README
+++ b/README
@@ -1 +1,2 @@
This is the README file.
+Nobody cares about the README file. Ever !
Pasul 13:
Salvați și această modificare și trimiteți modificările pe repository-ul github.com:
git add README
git commit -m "Added some wisdom lines" README
[master a4761b9] Added some wisdom lines
1 files changed, 1 insertions(+), 0 deletions(-)
git push origin master
Password:
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 309 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://student@github.com/student/Proiect1.git
2621cd5..a4761b9 master -> master
Pasul 14:
Pentru a descărca proiectul de pe site-ul/repository-ul github.com folosiți comanda git clone:
mkdir -p ~/tmp
cd ~/tmp
git clone https://student@github.com/student/Proiect1.git
Cloning into Proiect1...
Password:
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 6 (delta 0), reused 6 (delta 0)
Unpacking objects: 100% (6/6), done.
cd Proiect1/
ls
README
Info:
https://sites.google.com/site/besixtwofour/retele-intranet/documentatie-unelte