Kako koristiti Git Version Control System u Linuxu [Sveobuhvatan vodič]


Kontrola verzija (kontrola revizija ili kontrola izvora) je način bilježenja promjena u fajlu ili kolekciji fajlova tokom vremena kako biste kasnije mogli da se setite određenih verzija. Sistem za kontrolu verzija (ili VCS ukratko) je alat koji bilježi promjene datoteka na sistemu datoteka.

Postoji mnogo sistema kontrole verzija, ali Git je trenutno najpopularniji i najčešće korišten, posebno za upravljanje izvornim kodom. Kontrola verzija se zapravo može koristiti za gotovo bilo koju vrstu datoteke na računaru, ne samo za izvorni kod.

Sistemi/alati za kontrolu verzija nude nekoliko funkcija koje omogućavaju pojedincima ili grupi ljudi da:

  • kreirati verzije projekta.
  • precizno pratiti promjene i rješavati konflikte.
  • spojiti promjene u zajedničku verziju.
  • vratite i poništite promjene odabranih datoteka ili cijelog projekta.
  • pristupiti istorijskim verzijama projekta da biste uporedili promene tokom vremena.
  • pogledajte ko je zadnji izmijenio nešto što bi moglo uzrokovati problem.
  • kreirajte sigurnu rezervnu kopiju projekta izvan lokacije.
  • koristite više mašina za rad na jednom projektu i još mnogo toga.

Projekat pod sistemom kontrole verzija kao što je Git će imati uglavnom tri sekcije, i to:

  • spremište: baza podataka za bilježenje stanja ili promjena vaših projektnih datoteka. Sadrži sve potrebne Git metapodatke i objekte za novi projekat. Imajte na umu da je to obično ono što se kopira kada klonirate spremište sa drugog računara na mreži ili udaljenom serveru.
  • radni direktorij ili područje: pohranjuje kopiju projektnih datoteka na kojima možete raditi (dodavanje, brisanje i druge radnje modifikacije).
  • scensko područje: datoteka (poznata kao indeks pod Git-om) unutar Git direktorija, koja pohranjuje informacije o promjenama koje ste spremni da urezujete (sačuvate stanje datoteke ili skupa datoteka) u spremište.

Postoje dva glavna tipa VCS-a, sa glavnom razlikom u broju spremišta:

  • Centralizovani sistemi kontrole verzija (CVCS): ovdje svaki član projektnog tima dobija svoj lokalni radni direktorij, međutim, oni unose promjene u samo jedno centralno spremište.
  • Distributed Version Control Systems (DVCSs): prema ovome, svaki član projektnog tima dobija svoj lokalni radni direktorij i Git direktorij u kojem može izvršiti urezivanje. Nakon što pojedinac izvrši lokalno urezivanje, drugi članovi tima ne mogu pristupiti promjenama dok ih on/ona ne gurne u centralno spremište. Git je primjer DVCS-a.

Osim toga, Git spremište može biti golo (spremište koje nema radni direktorij) ili negolo (jedno s radnim imenik). Djeljena (ili javna ili centralna) spremišta uvijek trebaju biti gola – sva Github spremišta su gola.

Naučite kontrolu verzija sa Gitom

Git je besplatan i otvoreni izvor, brz, moćan, distribuiran, jednostavan za korištenje i popularan sistem kontrole verzija koji je vrlo efikasan kod velikih projekata i ima izvanredan sistem grananja i spajanja. Dizajniran je da rukuje podacima više kao niz snimaka mini sistema datoteka, koji je pohranjen u Git direktoriju.

Tok rada pod Git-om je vrlo jednostavan: vršite modifikacije datoteka u svom radnom direktoriju, a zatim selektivno dodajete samo one datoteke koje su se promijenile, u područje za pripremu, da budu dio vašeg sljedećeg urezivanja.

Kada budete spremni, radite urezivanje, koje preuzima datoteke iz područja za postavljanje i trajno sprema taj snimak u Git direktorij.

Da instalirate Git u Linuxu, koristite odgovarajuću naredbu za distribuciju po izboru:

sudo apt install git   [On Debian/Ubuntu]
sudo yum install git   [On CentOS/RHEL]

Nakon instaliranja Gita, preporučuje se da Gitu kažete ko ste tako što ćete dati svoje puno ime i adresu e-pošte, na sljedeći način:

git config --global user.name “Aaron Kili”
git config --global user.email “[email ”

Da biste provjerili svoje Git postavke, koristite sljedeću naredbu.

git config --list 

Kreira novo Git spremište

Dijeljena spremišta ili centralizirani tokovi rada su vrlo česti i to je ono što ćemo ovdje pokazati. Na primjer, pretpostavljamo da ste dobili zadatak da postavite udaljeno centralno spremište za sistemske administratore/programere iz različitih odjela u vašoj organizaciji, za rad na projektu pod nazivom bashscripts, koji će biti pohranjen pod /projects/scritpts/ na serveru.

SSH na udaljeni server i kreirajte neophodan direktorij, kreirajte grupu pod nazivom sysadmins (dodajte sve članove projektnog tima u ovu grupu, npr. korisničkog administratora) i postavite odgovarajuće dozvole na ovaj imenik.

mkdir-p /projects/scripts/
groupadd sysadmins
usermod -aG sysadmins admin
chown :sysadmins -R /projects/scripts/
chmod 770 -R /projects/scripts/

Zatim inicijalizirajte golo spremište projekta.

git init --bare /projects/scripts/bashscripts

U ovom trenutku, uspješno ste inicijalizirali goli Git direktorij koji je centralno skladište za projekat. Pokušajte napraviti popis direktorija da vidite sve datoteke i direktorije u njemu:

ls -la /projects/scripts/bashscripts/

Klonirajte Git spremište

Sada klonirajte udaljeno dijeljeno Git spremište na vaš lokalni računar putem SSH (možete klonirati i putem HTTP/HTTPS ako imate instaliran i odgovarajuće konfiguriran web server, kao što je slučaj s većinom javnih spremišta na Githubu), na primjer:

git clone ssh://admin@remote_server_ip:/projects/scripts/bashscripts 

Da ga klonirate u određeni direktorij (~/bin/bashscripts), koristite naredbu ispod.

git clone ssh://admin@remote_server_ip:/projects/scripts/bashscripts ~/bin/bashscripts

Sada imate lokalnu instancu projekta u ne-golom spremištu (sa radnim direktorijumom), možete kreirati početnu strukturu projekta (tj. dodati README.md datoteka, poddirektoriji za različite kategorije skripti, npr. recon za pohranjivanje skripti za izviđanje, sysadmin ro pohranjuju sysadmin skripte itd.):

cd ~/bin/bashscripts/
ls -la

Provjerite sažetak statusa Git

Za prikaz statusa vašeg radnog direktorija, koristite naredbu status koja će vam pokazati sve promjene koje ste napravili; koje datoteke Git ne prati; te promjene koje su inscenirane i tako dalje.

git status 

Git Stage Changes i Commit

Zatim izvršite sve promjene koristeći naredbu add sa prekidačem -A i izvršite početno urezivanje. Oznaka -a daje naredbu da automatski postavi datoteke koje su modificirane, a -m se koristi za specificiranje poruke urezivanja:

git add -A
git commit -a -m "Initial Commit"

Objavite lokalne obveze u udaljenom Git spremištu

Kao vođa projektnog tima, sada kada ste kreirali strukturu projekta, možete objaviti promjene u centralnom spremištu koristeći push komandu kao što je prikazano.

git push origin master

Trenutno, vaše lokalno git spremište treba da bude ažurirano sa centralnim spremištem projekta (origin), možete to potvrditi tako što ćete još jednom pokrenuti status komandu.

git status

Također možete obavijestiti svoje kolege da počnu raditi na projektu kloniranjem spremišta na njihove lokalne računare.

Kreirajte novu Git granu

Grananje vam omogućava da radite na osobini vašeg projekta ili brzo popravite probleme bez dodirivanja baze koda (glavna grana). Da kreirate novu granu i zatim se prebacite na nju, koristite komande grana i checkout.

git branch latest
git checkout latest

Alternativno, možete kreirati novu granu i prebaciti se na nju u jednom koraku koristeći checkout komandu sa zastavicom -b.

git checkout -b latest

Također možete kreirati novu granu zasnovanu na drugoj grani, na primjer.

git checkout -b latest master

Da provjerite u kojoj se grani nalazite, koristite naredbu granch (znak zvjezdice označava aktivnu granu):

git branch

Nakon kreiranja i prebacivanja na novu granu, napravite neke promjene ispod nje i izvršite neke urezivanja.

vim sysadmin/topprocs.sh
git status
git commit add  sysadmin/topprocs.sh
git commit -a -m 'modified topprocs.sh'

Spojite promjene iz jedne grane u drugu

Da spojite promjene pod testom grane u glavnu granu, prebacite se na glavnu granu i izvršite spajanje.

git checkout master 
git merge test 

Ako vam više nije potrebna određena grana, možete je izbrisati pomoću prekidača -d.

git branch -d test

Preuzmite promjene iz udaljenog centralnog spremišta

Pod pretpostavkom da su članovi vašeg tima ubacili promjene u centralno spremište projekta, možete preuzeti sve promjene na vašoj lokalnoj instanci projekta koristeći povuci naredbu.

git pull origin
OR
git pull origin master	#if you have switched to another branch

Pregledajte Git spremište i izvršite poređenja

U ovom poslednjem odeljku ćemo pokriti neke korisne Git funkcije koje prate sve aktivnosti koje su se desile u vašem spremištu, omogućavajući vam da vidite istoriju projekta.

Prva karakteristika je Git log, koji prikazuje zapisnike urezivanja:

git log

Još jedna važna karakteristika je naredba show koja prikazuje različite tipove objekata (kao što su urezivanja, oznake, stabla itd.):

git show

Treća vitalna karakteristika koju trebate znati je naredba diff, koja se koristi za upoređivanje ili prikazivanje razlike između grana, prikaz promjena između radnog direktorija i indeksa, promjene između dvije datoteke na disku i još mnogo toga.

Na primjer, da biste pokazali razliku između glavne i najnovije grane, možete pokrenuti sljedeću naredbu.

git diff master latest

Pročitajte također: 10 najboljih Git alternativa za hostovanje projekata otvorenog koda

Sažetak

Git omogućava timu ljudi da rade zajedno koristeći iste fajlove, dok bilježe promjene fajlova tokom vremena kako bi se kasnije mogli sjetiti određenih verzija.

Na ovaj način možete koristiti Git za upravljanje izvornim kodom, konfiguracijskim datotekama ili bilo kojom datotekom pohranjenom na računalu. Možda ćete htjeti pogledati Git Online dokumentaciju za daljnju dokumentaciju.