Git

Git Vodič za početnike

Git Vodič za početnike

Razvoj softvera zajednički je posao. Kao softverski inženjer, svoj rad morate podijeliti s drugima. Ali dijeljenje koda i suradnja mogu se zakomplicirati. Teško je pratiti razne promjene koje se događaju tijekom životnog ciklusa softvera. Stoga se razvojni timovi oslanjaju na alate za kontrolu verzija kako bi pomogli u procesu softverske suradnje. Git je jedan od najistaknutijih alata za kontrolu verzija u softverskoj industriji.

Savjet: U ovom vodiču naučit ćete kako se koristiti osnovama Gita. Svaki odjeljak završava s nekoliko pitanja. Pitanja možete pročitati prije nego što započnete čitati odjeljak. To će vam pomoći da razumijete i obratite pažnju na važne točke.

Zabavite se učeći Git!

Git: Kratki pregled

Git je distribuirani sustav kontrole verzija. Prati sve promjene koje unesete u datoteke i mape. Olakšava vam spremanje nedovršene proizvodnje. Ako postoji problem, možete jednostavno provjeriti stariju verziju datoteke ili mape. Ako je potrebno, možete čak i vratiti cijelu bazu kodova na stariju verziju.

Razvoj Gita započeo je 2005. godine. Grupa Linux kernela koristila je za održavanje svog koda u BitKeeper-u, vlasničkom distribuiranom sustavu za kontrolu verzija. Međutim, BitKeeper je povukao besplatno korištenje proizvoda. Tako je Linus Torvalds, tvorac i glavni programer Linuxa, dizajnirao novi sustav distribucije verzija otvorenog koda koji bi udovoljio zahtjevima razvojne zajednice Linuxa. I Git je rođen.

Kao distribuirani sustav kontrole verzija, Git ne zahtijeva centralizirano tijelo za praćenje koda. Starije centralizirane kontrole verzija kao što su CVS, SVN ili Perforce zahtijevaju da središnji poslužitelji održavaju povijest promjena. Git može lokalno pratiti sve promjene i raditi peer-to-peer. Dakle, svestraniji je od centraliziranih sustava.

Pitanja:

Instaliranje Gita

Za Linux sustave instalacija Gita je jednostavna. Ako koristite distribuciju zasnovanu na Debianu, poput Ubuntu, možete koristiti apt install:

$ sudo apt instalirati git-all

Za Fedoru, RHEL ili CentOS možete koristiti:

$ sudo dnf instaliraj git-all

Možete provjeriti je li Git instaliran pomoću sljedeće naredbe:

$ git --verzija

Trebao bi vam pokazati verziju Gita koju ste instalirali, na primjer:

git verzija 2.17.0

Nakon što instalirate Git, vrijeme je da postavite svoje korisničko ime i e-adresu:

$ git config - globalni korisnik.ime "vašeimekorisnika"
$ git config - globalni korisnik.e-pošta "[e-pošta zaštićena]"

Pomoću sljedeće naredbe možete provjeriti jesu li konfiguracije pravilno postavljene:

$ git config --list
korisnik.ime = vašeimekorisnika
korisnik.adresa e-pošte = yourusername @ primjer.com

Savjet: Važno je postaviti korisnika.ime i korisnik.e-poštu jer se ove konfiguracije koriste za praćenje vaših promjena.

Pitanja

Konceptualno razumijevanje Gita

Da biste koristili Git, prvo morate razumjeti ova četiri pojma:

Radni direktorij, upravno područje i spremište lokalno su na vašem stroju. Udaljeno spremište može biti bilo koje drugo računalo ili poslužitelj. Zamislimo ove koncepte kao četiri kutije u koje se mogu smjestiti standardni A1 papiri.

Pretpostavimo da ručno pišete dokument na A1 papiru za svojim stolom. Ovaj dokument čuvate u radnom okviru direktorija. U određenoj fazi svog rada odlučite da ste spremni zadržati kopiju već obavljenog posla. Dakle, napravite fotokopiju svog trenutnog papira i stavite ga u okvir za inscenaciju.

Okvir za inscenaciju privremeno je područje. Ako odlučite odbaciti fotokopiju u okvir za inscenaciju i ažurirati je novom kopijom dokumenta radnog imenika, neće postojati trajni zapis tog insceniranog dokumenta.

Pretpostavimo da ste prilično sigurni da želite zadržati trajnu evidenciju dokumenta koji imate u pripremnom okviru. Zatim napravite fotokopiju dokumenta spremnika i premjestite ga u okvir spremišta.

Kad ga premjestite u okvir spremišta, događaju se dvije stvari:

  1. Snimka dokumenta sprema se trajno.
  2. Upisuje se datoteka dnevnika koja ide sa snimkom.

Unos u zapisnik pomoći će vam pronaći određenu snimku vašeg dokumenta ako vam zatreba u budućnosti.

Sada, u okviru lokalnog spremišta, imate snimak svog rada i unos u zapisnik. Ali dostupno je samo vama. Dakle, napravite kopiju dokumenta lokalnog spremišta zajedno s datotekom dnevnika i stavite ga u okvir u prostoriji tvrtke. Sada bilo tko u vašoj tvrtki može doći i napraviti kopiju vašeg dokumenta i odnijeti ga na svoj stol. Kutija u opskrbi bila bi udaljeno spremište.

Udaljeno spremište je poput dijeljenja dokumenta pomoću Google dokumenata ili Dropboxa.

Pitanja:

Vaše prvo Git spremište

Nakon što instalirate Git, možete započeti sa stvaranjem vlastitih Git spremišta. U ovom ćete odjeljku inicijalizirati svoje Git spremište.

Pretpostavimo da radite na projektu web razvoja. Stvorimo mapu nazvanu project_helloworld i promijenimo se u direktorij:

$ mkdir project_helloworld
$ cd projekt_heloworld

Možete reći Gitu da nadgleda ovaj direktorij pomoću sljedeće naredbe:

$ git init

Trebali biste vidjeti izlaz poput ovog:

Inicijalizirano prazno Git spremište u / Users / zakh / _work / LearnGIT / git_tutorial /
projekt_heloworld /.git

Sada će sve datoteke i mape unutar project_helloworld pratiti Git.

Pitanja:

Osnovne Git naredbe: status, zapis, dodavanje i urezivanje

Naredba status prikazuje trenutno stanje vašeg radnog imenika, a naredba dnevnika prikazuje povijest. Pokušajmo naredbu status:

$ git status
Na majstoru grane
Početno predavanje
ništa za obvezivanje (stvaranje / kopiranje datoteka i korištenje "git add" za praćenje)

Izlaz naredbe git status govori da ste na glavnoj grani. Ovo je zadana grana koju Git inicijalizira. (Možete stvoriti vlastite grane. Više o poslovnicama kasnije). Također, izlaz govori da se nema što počiniti.

Pokušajmo naredbu log:

$ git zapisnik
fatalno: vaša trenutna grana 'master' još nema nijednu obvezu

Dakle, vrijeme je za stvaranje nekog koda. Stvorimo datoteku koja se zove indeks.html:


Moja web stranica


Pozdrav svijete

Za izradu datoteke možete koristiti uređivač teksta. Nakon što spremite datoteku, ponovno provjerite status:

$ git status
Na majstoru grane
Početno predavanje
Nepraćene datoteke:
(upotrijebite "git add ... "uključiti u ono što će biti počinjeno)
indeks.html
ništa nije dodano za urezivanje, ali prisutne su datoteke bez praćenja (za praćenje koristite "git add")

Git vam govori da imate datoteku koja se zove index.html u vašem radnom direktoriju koji nije praćen.

Provjerimo indeks.html se prati. Morat ćete upotrijebiti naredbu add:

$ git dodaj indeks.html

Možete koristiti i ".”Mogućnost dodavanja svega u direktorij:

$ git dodaj .

Sada provjerimo status ponovo:

$ git status
Na majstoru grane
Početno predavanje
Promjene koje treba izvršiti:
(koristite "git rm --cached ... "do nestanka)
nova datoteka: indeks.html

Zelena označava da indeks.html datoteku prati Git.

Savjet: Kao što je spomenuto u gornjim uputama, ako koristite naredbu:

$ git rm --cached indeks.html

Vaš indeks.html će se vratiti u status bez praćenja. Morat ćete ga dodati ponovo da biste ga vratili na scenu.]

Ponovno provjerimo zapisnik:

$ git zapisnik
fatalno: vaša trenutna grana 'master' još nema nijednu obvezu

Pa iako Git prati indeks.html, u Git spremištu još nema ničega o datoteci. Zabilježimo naše promjene:

$ git commit -m "Indeks predavanja.html "
Izlaz bi trebao izgledati otprilike ovako:
[master (root-commit) f136d22] Indeks predavanja.html
Promijenjena 1 datoteka, 6 umetanja (+)
stvoriti način rada 100644 indeks.html

Tekst unutar navodnika nakon "-m" komentar je koji će ući u datoteku dnevnika. Možete koristiti git commit bez "-m", ali tada će Git otvoriti uređivač teksta koji će tražiti da napišete komentare. Jednostavnije je samo staviti komentare izravno u naredbeni redak.

Sada provjerimo našu datoteku dnevnika:

$ git zapisnik
predati f136d22040ba81686c9522f4ff94961a68751af7
Autor: Zak H
Datum: pon 4. lipnja 16:53:42 2018 -0700
Indeks predavanja.html

Možete vidjeti da prikazuje počinjenje. Uspješno ste izvršili promjene na vašem lokalnom spremištu. Ako želite vidjeti isti zapis na jezgrovit način, možete upotrijebiti sljedeću naredbu:

$ git log --oneline
f136d22 Indeks predavanja.html

Krećući se naprijed, koristit ćemo ovaj oblik naredbe dnevnika jer olakšava razumijevanje što se događa.

Počnimo s uređivanjem indeksa.html. Otvorite indeks.html u uređivaču i promijenite redak "Hello world" u "Hello world! Ja sam!I spremite ga. Ako ponovno provjerite status, vidjet ćete da je Git primijetio da uređujete datoteku:

$ git status
Na majstoru grane
Promjene nisu uprizorene za urezivanje:
(upotrijebite "git add ... "za ažuriranje onoga što će biti počinjeno)
(koristite "git checkout -- ... "za odbacivanje promjena u radnom direktoriju)
izmijenjeno: indeks.html
bez dodavanja promjena u urezivanje (koristite "git add" i / ili "git commit -a")

Promjena je još uvijek u vašem radnom direktoriju. Morate ga gurnuti na mjesto uprizorenja. Upotrijebite naredbu add koju ste koristili prije:

$ git dodaj .

Ponovno provjerite status:

$ git status
Na majstoru grane
Promjene koje treba izvršiti:
(koristite "git reset HEAD ... "do nestanka)
izmijenjeno: indeks.html

Sada su vaše promjene u scenskom području. Možete ga predati u spremište na trajno čuvanje:

$ git commit -m "Izmijenjeni indeks.html do sretnije poruke "
[master 0586662] Izmijenjeni indeks.html do sretnije poruke
1 datoteka promijenjena, 1 umetanje (+), 1 brisanje (-)

U zapisniku možete provjeriti trajne promjene:

$ git log --oneline
0586662 Izmijenjeni indeks.html do sretnije poruke
f136d22 Indeks predavanja.html

U ovom ste odjeljku naučili koristiti naredbe statusa, evidentiranja, dodavanja i predavanja kako biste pratili svoje dokumente u Gitu.

Pitanja:

  • Što radi git status?
  • Što radi git log?
  • Što čini git add?
  • Što radi git commit?

Povratak na starije datoteke koristeći Checkout

Kada urežete datoteku u Git-u, ona stvara jedinstveni hash za svako urezivanje. Možete ih koristiti kao identifikatore za povratak na stariju verziju.

Pretpostavimo da se želite vratiti na svoju raniju verziju indeksa.html. Prvo, pogledajmo indeks.html u trenutnom stanju:

indeks $ mačka.html

Moja web stranica


Pozdrav svijete! Ja sam!

Vidite da imate noviju verziju („Zdravo svijete! Ja sam!"). Provjerimo zapisnik:

$ git log --oneline
0586662 Izmijenjeni indeks.html do sretnije poruke
f136d22 Indeks predavanja.html

Raspršivanje za prethodnu verziju bilo je f136d22 ("Pozdrav svijetu").  Pomoću naredbe za naplatu možete doći do te verzije:

$ git naplata f136d22
Napomena: provjeravanje 'f136d22'.
U stanju ste 'odvojena GLAVA'. Možete pogledati oko sebe, napraviti eksperimentalne promjene
i počinite ih, a možete odbaciti sve obveze koje izvršite u ovom stanju
bez utjecaja na bilo koju poslovnicu izvršavanjem druge provjere.
Ako želite stvoriti novu granu kako biste zadržali obveze koje ste stvorili, možete
učinite to (sada ili kasnije) ponovnim korištenjem -b s naredbom za naplatu. Primjer:
git checkout -b
HEAD je sada na f136d22… Indeks predavanja.html

Ako pogledate sadržaj indeksa.html, vidjet ćete:

indeks $ mačka.html

Moja web stranica


Pozdrav svijete

Ima samo "Hello world". Dakle, vaš indeks.html promijenio se u stariju verziju. Ako provjerite status:

$ git status
GLAVA odvojena na f136d22
ništa za obvezivanje, radni direktorij čist

Git vam u osnovi govori da HEAD nije na zadnjem urezivanju. Možete se vratiti najnovijem urezivanju provjerom glavne grane pomoću sljedeće naredbe:

$ git checkout master
Prethodna pozicija HEAD bila je f136d22 ... Indeks predavanja.html
Prebačeno na granu 'master'

Sada ako provjerite status:

$ git status
Na majstoru grane
ništa za obvezivanje, radni direktorij čist

Crveno upozorenje je nestalo. Također, ako provjerite svoj indeks.html, trebali biste se vratiti na najnoviju verziju:

indeks $ mačka.html

Moja web stranica

Pozdrav svijete! Ja sam!

Naredba checkout vodi vas u različita stanja. O naplati ćemo saznati više u sljedećem odjeljku.

Pitanja:

  • Kako pomoću naredbe git checkout idete na stariju verziju datoteke?
  • Kako koristite git checkout za povratak na najnoviju verziju datoteke?

Plaćanje, grananje i spajanje

Grananje je jedna od najboljih značajki Gita. Pomaže vam odvojiti posao i više eksperimentirati. U ostalim sustavima za upravljanje verzijama grananje je bilo dugotrajno i teško. Git je olakšao grananje i spajanje.

Kao što ste primijetili u naredbi statusa, kada kreirate novo Git spremište, nalazite se u glavnoj grani.

$ git status
Na majstoru grane
ništa za obvezivanje, radni direktorij čist

Pretpostavimo da izrađujete web stranicu za svog prijatelja Davida. Želite ponovno upotrijebiti kôd vlastite web stranice. Razgranavanje je izvrsno rješenje. Nazovimo granu david_website.

Možete izdati sljedeću naredbu:

$ git grana david_website

Sljedeću naredbu možete koristiti za prikaz svih grana:

$ git grana --list
web stranica david_
* ovladati; majstorski

Zvijezda (*) pored master-a znači da ste još uvijek u master grani. Granu david_website možete provjeriti sljedećom naredbom:

$ git checkout david_web stranica
Prebačeno na granu 'david_website'

Ako ponovno provjerite popis grana, vidjet ćete:

$ git grana --list
* web stranica david_
ovladati; majstorski

Dakle, vi ste na grani david_website.

Promijenimo indeks.html iz “Hello world! Ja sam!"Do" Pozdrav svijete! David je!", A zatim izvedite i izvršite:

$ git dodaj .
$ git commit -m "Promijenjeno web mjesto za Davida"

Ako provjerite zapisnike, trebali biste vidjeti:

$ git log --oneline
345c0f4 Promijenjeno web mjesto za Davida
0586662 Izmijenjeni indeks.html do sretnije poruke
f136d22 Indeks predavanja.html

A vaša indeksna datoteka trebala bi izgledati ovako:

indeks $ mačka.html

Moja web stranica


Pozdrav svijete! David je!

Sada provjerimo glavnu granu:

$ git checkout master
Prebačeno na granu 'master'

Ako provjerite status i zapisnik:

$ git status
Na majstoru grane
ništa za obvezivanje, radni direktorij čist
$ git log --oneline
0586662 Izmijenjeni indeks.html do sretnije poruke
f136d22 Indeks predavanja.html

Primijetite da nemate svoj treći polog u masteru. Budući da se taj predaj održava samo u grani david_website.

To se dogodilo

Pretpostavimo da u ovoj fazi odlučite da ne želite nastaviti svoju web stranicu. Samo ćeš biti programer za Davida. Dakle, želite spojiti promjene u grani david_website s glavnim. Iz glavne grane jednostavno morate izdati sljedeće naredbe (naredba statusa koristi se za provjeru jeste li na pravom mjestu):

$ git status
Na majstoru grane
ništa za obvezivanje, radni direktorij čist
 
$ git spajanje david_website
Ažuriranje 0586662… 345c0f4
Premotavanje unaprijed
indeks.html | 2 +-
1 datoteka promijenjena, 1 umetanje (+), 1 brisanje (-)

Savjet: Povlačite promjene s web stranice david_weeter na master. Da biste to postigli, morate biti glavni.

Sada ako provjerite zapisnik na masteru, vidjet ćete da je tamo treći urezivanje:

$ git log --oneline
345c0f4 Promijenjeno web mjesto za Davida
0586662 Izmijenjeni indeks.html do sretnije poruke
f136d22 Indeks predavanja.html

Uspješno ste spojili granu david_website u master. I vaš indeks.html za glavnu granu izgleda identično grani david_website:

indeks $ mačka.html

Moja web stranica


Pozdrav svijete! David je!

Možete zadržati granu david_website:

$ git grana --list
web stranica david_
* ovladati; majstorski

Ili ga možete izbrisati:

$ git grana -d web stranica david_
Izbrisana grana david_website (bila je 345c0f4).

Nakon brisanja više ne biste trebali vidjeti granu david_website:

$ git grana --list
* ovladati; majstorski

Savjet: Tijekom spajanja, ako se Git ne može spojiti automatski, dobit će vam pogreške pri spajanju. U tom slučaju morate ručno riješiti probleme spajanja.

Pitanja:

  • Zašto vam treba grananje?
  • Kako se granaju i spajaju datoteke i mape?

Udaljeno spremište

Do sada je sav vaš posao bio lokalni. Uveli ste svoje promjene u lokalno spremište. Ali vrijeme je da svoj posao podijelite sa svijetom.

Git udaljeno spremište je u osnovi još jedna kopija vašeg lokalnog spremišta kojem drugi mogu pristupiti. Možete postaviti poslužitelj i učiniti ga udaljenim spremištem. Ali većina ljudi u tu svrhu koristi GitHub ili Bitbucket. Tamo možete besplatno stvoriti javna spremišta kojima može pristupiti svatko.

Stvorimo udaljeno spremište na GitHubu.

Prvo morate stvoriti GitHub račun []. Nakon što imate račun, stvorite novo spremište pomoću gumba "Novo spremište". Upotrijebite "project_website" kao naziv spremišta (ako želite želite odabrati nešto drugo).

Trebali biste vidjeti karticu Code s uputama poput ovih:

... ili izradite novo spremište na naredbenom retku

echo "# project_website" >> README.doktor medicine
git init
git dodaj README.doktor medicine
git commit -m "prvo urezivanje"
git daljinski dodaj izvor git @ github.com: vaše korisničko ime / web-lokacija_projekta.git
git push -u master podrijetla

Kopirajte sljedeću naredbu “git remote add origin” i pokrenite je u svoj radni direktorij:

$ git remote dodaj podrijetlo git @ github.com: vaše korisničko ime / web-lokacija_projekta.git

Napomena: U vašem slučaju, vaše korisničko ime trebalo bi biti ono što ste koristili za izradu svog GitHub računa.

U gornjoj naredbi uputili ste Git mjesto udaljenog spremišta. Naredba govori Gitu da će "podrijetlo" za vaš radni direktorij project_helloworld biti "[zaštićen e-poštom]: vaše korisničko ime / web-lokacija_projekta.git ".

Sada gurnite svoj kôd iz glavne grane u izvor (udaljeno spremište):

$ git push master master
Brojanje predmeta: 9, gotovo.
Delta kompresija pomoću do 4 niti.
Komprimiranje predmeta: 100% (6/6), gotovo.
Zapisivanje objekata: 100% (9/9), 803 bajta | 0 bajtova / s, gotovo.
Ukupno 9 (delta 2), ponovno korišteno 0 (delta 0)
daljinski: Rješavanje delta: 100% (2/2), gotovo.
Za git @ github.com: vaše korisničko ime / web-lokacija_projekta.git
* [nova grana] master -> master

Ako osvježite svoj preglednik u GitHubu, trebali biste vidjeti da je indeks.html datoteka je tamo gore. Dakle, vaš je kôd javan, a drugi programeri mogu provjeriti i izmijeniti kôd na udaljenom spremištu.

Kao programer radit ćete s kodom drugih ljudi. Stoga vrijedi pokušati provjeriti kod s GitHub-a.

Idemo u novi direktorij u kojem nemate ništa. Na desnoj strani spremišta GitHub primijetit ćete gumb "Kloniraj ili preuzmi". Ako je kliknete, trebala bi vam dati SSH adresu. Pokrenite sljedeću naredbu sa SSH adresom:

$ git klon git @ github.com: vaše korisničko ime / web-lokacija_projekta.git

Izlaz bi trebao izgledati ovako:

$ git klon git @ github.com: vaše korisničko ime / web-lokacija_projekta.git
Kloniranje u 'project_website' ..
daljinski: Brojanje predmeta: 9, gotovo.
daljinski: Komprimiranje predmeta: 100% (4/4), gotovo.
daljinski: Ukupno 9 (delta 2), ponovno upotrijebljeno 9 (delta 2), pakirano ponovno korišteno 0
Primanje predmeta: 100% (9/9), gotovo.
Rješavanje delta: 100% (2/2), gotovo.
Provjera povezanosti ... gotovo.

Stvorit će web lokaciju project_wee u vašoj čistoj mapi. Ako uđete unutra, trebali biste vidjeti indeks.html s vašeg project_helloworld.

Dakle, postigli ste sljedeće:

  • Stvorio i napravio promjene u project_helloworld
  • Kôd je prenio na GitHub na web-mjestu project_website
  • Preuzeo kôd s GitHub-a

Idemo još jednu datoteku iz novog radnog imenika project_website:

$ touch ReadMe.doktor medicine
$ git dodaj .
$ git commit -m "Dodan je ReadMe.doktor medicine"
$ git push master master

Ako osvježite stranicu web stranice GitHub project_website, trebali biste vidjeti ReadMe.md datoteka tamo.

Napomena: Kada preuzmete kôd s GitHub-a, radni direktorij automatski zna podrijetlo. Ne morate ga definirati naredbom "git remote add origin".

Pitanja:

  • Zašto trebate koristiti udaljena spremišta?
  • Kako postavljate svoje trenutno lokalno spremište za povezivanje s udaljenim spremištem?
  • Kako klonirate udaljena spremišta na lokalno računalo?

Zaključak

Više informacija o svim naredbama možete pronaći u Git dokumentima []. Iako su dostupni Git UI alati, naredbena je crta najbolji način za svladavanje Gita. To će vam dati jači temelj za vaš razvojni rad.

Daljni studiji:
  • https: // git-scm.com / docs
  • https: // git-scm.com / book / en / v2
  • https: // git-scm.com / video
Instalirajte najnoviju strategiju igre OpenRA na Ubuntu Linux
OpenRA je Libre / Free Real Time strateški pokretač igre koji stvara rane Westwoodove igre poput klasične Command & Conquer: Red Alert. Distribuirani ...
Instalirajte najnoviji Dolphin Emulator za Gamecube i Wii na Linux
Dolphin Emulator omogućuje vam igranje odabranih Gamecube i Wii igara na Linux osobnim računalima (PC). Dolphin Emulator je slobodno dostupan i emula...
Kako koristiti GameConqueror Cheat Engine u Linuxu
Članak pokriva vodič o korištenju GameConqueror varalice u Linuxu. Mnogi korisnici koji igraju igre na sustavu Windows često koriste aplikaciju "Cheat...