Git. Brzi početak osnovnih operacija s objašnjenjima

Ovo objašnjava praktični dio korištenja Gita - instaliranje i registracija na poslužitelju GitHub.com.

GitHub.com je usluga koja nudi pohranu vašeg koda i podataka pomoću sistema za kontrolu verzija Git... GitHub nudi besplatan plan za pohranu 300 MB podataka u čistom tekstu. To znači da svaki korisnik interneta može preuzeti vaše podatke. Na GitHub -u možete ugostiti spremišta koja su zatvorena za druge i plaćaju 7 USD mjesečno. Na besplatnom GitHub računu, prema zadanim postavkama, nitko ne može promijeniti vaše podatke (oni mogu samo čitati). Međutim, možete navesti koje GitHub korisnike je moguće pisati.

Ovaj članak detaljno objašnjava kako postaviti Git na Windows i Linux.

Instaliranje Gita na Linuxu

Korisnicima Linuxa mislim da nema smisla objašnjavati kako instalirati Git - na svakom sistemu to se radi drugačije. Na Debian sistemu (koji imam), da biste instalirali Git, možete koristiti naredbu:

apt-get install git

Instaliranje Gita na Windows

Idi službena stranica Git http://git-scm.com, kliknite na Preuzmite za Windows... U prozoru koji se otvori kliknite na Potpuni instalacijski program za službeni Git... Pokrećemo rezultirajući exe-shnik.

Tokom procesa instalacije postaviće se sljedeće pitanje:

Preporučujem da odaberete "Pokreni Git iz Windows naredbenog retka". Sve ostale opcije možete ostaviti prema zadanim postavkama. Nakon instaliranja Gita, morate se ponovo pokrenuti ili odjaviti i ponovo prijaviti da biste primijenili promjene na sistemskoj PATH.

Ako dobijemo informacije o verziji, tada je Git instaliran i radi. Ako dobijemo informaciju da git program nije pronađen, shvatit ćemo u čemu smo pogriješili.

Konfiguriranje SSH ključeva

Prije registracije na GitHub, prvo morate generirati SSH ključ za šifriranje. Ovaj ključ je potreban za brzo uspostavljanje veze s GitHubom bez unosa lozinke. Bez takvog ključa GitHub jednostavno neće raditi.

Pažnja!

U vrijeme generiranja ključa od vas će se tražiti lozinka. Ovo je lozinka za pristup privatnom ključu, koji je pohranjen samo na vašem računaru i nigdje drugdje. Ova lozinka je postavljena radi maksimalne sigurnosti, iako možete i bez nje. Morate znati da ćete postavljanjem lozinke za privatni ključ ovu lozinku morati unijeti svaki put kada se povežete na GitHub poslužitelj. Stoga pri postavljanju lozinke nestaje sva pogodnost korištenja ključeva za šifriranje.

Za korisnike MyTetre: interfejs komandne linije koji se koristi za pozivanje gita tokom sinhronizacije ne može raditi na unosu znakova. Stoga, ako postavite lozinku, sinkronizacija neće raditi.

Konfiguriranje SSH ključeva na Linuxu

IN operativni sistem Linux, prvo morate pogledati direktorij ~ / .ssh. Ako postoje datoteke id_rsa i id_rsa.pub, onda su to SSH ključevi. Ako ne postoji takav direktorij ili takve datoteke, ključevi se moraju generirati. Dajemo naredbu:

Umjesto [zaštićena e -pošta] morate unijeti svoju e -poštu. U procesu generiranja ključa, bit ćete upitani gdje smjestiti datoteke, kao odgovor, jednostavno pritisnite Enter. Kada se od vas zatraži lozinka, samo pritisnite Enter. Nakon generiranja, datoteke id_rsa i id_rsa.pub bi se trebale pojaviti u direktoriju ~ / .ssh, bit će nam korisne u budućnosti.

Konfiguriranje SSH ključeva u sustavu Windows

U sustavu Windows, SSH generator ključeva uključen je u Git. Da biste generirali ključeve, morate pokrenuti datoteku C: \ Program Files \ Git \ Git bash.vbs... Može se pokrenuti kao običan exe-shnik. Otvara se git konzola. U njemu morate dati naredbu:

ssh -keygen -t rsa -C " [zaštićena e -pošta]"

Budite oprezni, ova konzola omogućava copy-paste, lakše je ručno unijeti naredbu. Odredite svoju e -poštu kao e -poštu poštansko sanduče... Na zahtjev " Unesite datoteku u koju ćete spremiti ključ"samo pritisnite Enter. Kada se od vas zatraži lozinka" Enter passphrase "i" Enter enter passphrase again "samo pritisnite Enter. Tokom procesa generiranja ključeva, konzola će prikazati približno sljedeće informacije:

Generiranje javnog / privatnog para ključeva rsa.
Unesite datoteku u koju želite spremiti ključ ( / c / Dokumenti i postavke / korisničko ime / .ssh / id_rsa):
Unesite zaporku (prazna za bez pristupne fraze):
Ponovo unesite istu lozinku:
Vaša identifikacija je sačuvana u / c / Dokumenti i postavke / korisničko ime / .ssh / id_rsa.
Vaš javni ključ je sačuvan u / c / Documents and Settings / username / .ssh / id_rsa.pub.
Ključni otisak prsta je:
51: db: 73: e9: 31: 9f: 51: a6: 7a: c5: 3d: da: 9c: 35: 8f: 95 [zaštićena e -pošta]

Nakon izvršavanja ovog programa, u direktoriju C: \ Dokumenti i postavke \ korisničko ime \ .ssh bit će datoteke id_rsa i id_rsa.pub, bit će nam korisne u budućnosti.

Prijavite se na GitHub.com

Sada je sve spremno za registraciju. Idite na početnu stranicu GitHub.com. Sučelje je pomalo zbunjeno, pa ću vam dati par snimaka ekrana gdje šta da kliknete. Dizajn i izgled se mogu promijeniti u bilo kojem trenutku, pa opisujem logiku radnji u ovaj trenutak.

U gornjem meniju nalazimo stavku " Cijene i registracija"i kliknite na nju:

Otvorit će se stranica za odabir tarifni plan... Odabir besplatnog računa " Kreirajte besplatni račun":

Instaliranje SSH ključa na GitHub

Odmah nakon registracije morate registrirati svoj javni ključ za šifriranje (SSH javni ključ) u sistemu GutHub. Da biste dodali ključ, morate s desne strane gornji ugao pritisnite " Postavke računa":

U prozoru koji se otvori kliknite na stavku menija " SSH javni ključevi", i pritisnite" Dodajte još jedan javni ključ". Pojavit će se dva polja - naziv ključa ( Naslov) i sadržaj ključa ( Ključ).

Na terenu Naslov možete napisati ime računara na kojem je generisan javni ključ. Možete pisati na ruskom.

Na terenu Ključ morate umetnuti sadržaj datoteke id_rsa.pub. Sjetite se u kojem se direktoriju nalaze? Idite u ovaj direktorij, otvorite datoteku id_rsa.pub s bilo kojim uređivačem teksta (s nastavkom .pub, ne miješajte je). Odaberite sav tekst, kopirajte i zalijepite na stranicu GitHub u polje Ključ.

Nakon dodavanja ključa, računalo se može spojiti na GitHub putem programa git i ne bi trebalo doći do grešaka.

Kreiranje spremišta na GitHubu

Sada je vrijeme za kreiranje vašeg prvog GitHub spremišta. Spremište se može posmatrati jednostavno kao direktorij u kojem će se nalaziti datoteke i poddirektoriji za sinkronizaciju. Morate stvoriti spremište u GitHub web sučelju, a možete ga napuniti datotekama i raditi s njim pomoću programa git na vašem računaru.

Da biste stvorili spremište, u gornjem desnom kutu kliknite " Kontrolna tabla". U prozoru koji se otvori vidjet ćete stavku" Kreirajte spremište":

Dakle, ova stavka nam ne treba! Ova stavka ne otvara dijalog za kreiranje spremišta, već stranicu za pomoć. Umjesto klika na ovu stavku, potražite neupadljivu vezu ispod na stranici " Kreirajte spremište". Otvorit će se dijalog za dodavanje novog spremišta.

U dijalogu za dodavanje novog spremišta morate popuniti barem polje naziva projekta " ime projekta". Bolje je ne koristiti ćirilicu u nazivu projekta, jer je naziv projekta zapravo naziv direktorija. Da biste izbjegli probleme, bolje je da naziv projekta sadrži samo latinicu abeceda. Nakon što pritisnete dugme " Kreirajte spremište", spremište će biti kreirano.

Radna veza do spremišta u GitHub sistemu formirana je na sljedeći način. Ako ste se registrirali kao korisničko ime i vaše spremište se zove reponame, možete koristiti sljedeće veze za pristup ovom spremištu:

U Git sintaksi:

[zaštićena e -pošta]: korisničko ime / reponame.git

U Https sintaksi:

https: // [zaštićena e -pošta]/username/reponame.git

Rad sa spremištem na GitHub -u kroz Git program

Od sada se plesanje oko GitHub web sučelja može smatrati potpunim. Nadalje, možete raditi samo pomoću programa git.

Prvo morate malo prilagoditi git program: recite lokalnom git sistemu korisničko ime i e -poštu. To se radi pomoću sljedećih naredbi, koje se mogu izvršiti iz bilo kojeg direktorija:

git config --global user.name "Vaše puno ime"
git config --global user.email [zaštićena e -pošta]

gdje umjesto YourFullName trebate upisati svoje ime, a umjesto [zaštićena e -pošta]- vaš email. Ove vrijednosti se koriste za prijavu na GitHub. Stoga, umjesto YourFullName, morate navesti svoje korisničko ime na GitHub -u i na mjestu [zaštićena e -pošta] morate navesti adresu e -pošte koju ste unijeli prilikom generiranja ključeva za šifriranje.

Nakon ovih postavki, možete učitati svoje datoteke u spremište. Idemo u direktorij s našim projektom i dajemo naredbe:

git commit -a -m "prvo urezivanje"

git remote add origin [zaštićena e -pošta]: korisničko ime / reponame.git

git push -u origin master

Nakon ovih naredbi, na GitHub poslužitelju se formiraju kopije datoteka direktorija u kojem su ove naredbe izvedene. Tada već možete urezivati, učitavati promjene na GitHub poslužitelj, čitati promjene s poslužitelja. Ali to je sasvim druga priča.

Prirodno je da se ljudi opiru promjenama. Ako niste naišli na Git kada ste počeli raditi sa sistemima za kontrolu verzija, vjerojatno ćete se osjećati ugodnije sa Subverzijom (SVN).

Često ljudi kažu da je Git previše kompliciran za početnike. Međutim, dozvolit ću sebi da se s tim ne složim.

U ovom vodiču ću vam pokazati kako koristiti Git u svojim projektima. Recimo da gradite projekt od nule i želite njime upravljati pomoću Gita. Prolaskom kroz popis osnovnih naredbi, steći ćete ideju o tome kako smjestiti svoj kôd u oblak pomoću GitHub -a.

U ovom ćemo članku govoriti o osnovama Gita - kako pokrenuti svoje projekte, kako upravljati novim i postojećim datotekama i kako pohraniti kôd u oblak.

Nećemo se doticati relativno složenih dijelova Gita, poput grananja, jer je ovaj vodič namijenjen početnicima.

Instaliranje Gita

Službena Git web stranica ima detaljne informacije o instaliranju na Linux, Mac i Windows. U našem slučaju, za potrebe demonstracije koristit ćemo Ubuntu 13.04, gdje ćemo instalirati Git pomoću apt-get:

sudo apt-get install git

Početno podešavanje

Kreirajmo direktorij unutar kojeg ćemo raditi. Alternativno, možete koristiti Git za upravljanje jednim od svojih postojećih projekata; u ovom slučaju nećete morati kreirati demo direktorij kao što je prikazano ispod:

mkdir my_git_project cd my_git_project

Prvi korak je inicijalizacija Gita u direktoriju. To se može učiniti pomoću naredbe init, koja stvara .git direktorij koji sadrži sve informacije vezane za Git za vaš projekt.

git config --global user.name "Shaumik" git config --global user.email " [zaštićena e -pošta]"git config --global color.ui" auto "

Važno je napomenuti da ako ne navedete svoje ime i adresu Email tada će se koristiti zadane vrijednosti. U našem slučaju, zadane vrijednosti bile bi korisničko ime donny i adresa e -pošte. [zaštićena e -pošta].

Osim toga, odredili smo i boju korisnički interfejs auto, što čini izlaz Git naredbi bojama.

Prefiks -global ispred naredbi potreban je kako bi se izbjeglo unošenje ovih konfiguracijskih naredbi sljedeći put kada pokrenemo Git projekt na našem sistemu.

Priprema datoteka za urezivanje

Sljedeći korak je stvaranje datoteka u direktoriju. Možete koristiti na primjer uređivač teksta Vim. Imajte na umu da ako želite dodati Git u postojeći direktorij, ne morate dovršiti ovaj korak:

Provjerite status spremišta

Sada kada imamo nekoliko datoteka u našem spremištu, pogledajmo kako ih Git rješava. Da biste provjerili trenutni status spremišta, morate koristiti naredbu git status:

Dodavanje datoteka u Git za praćenje

Trenutno nemamo datoteka za praćenje s Gitom. Moramo dodati datoteke posebno u Git kako bismo Gitu rekli šta da prati.

Dodajte datoteke pomoću naredbe add:

Ponovnom provjerom stanja spremišta možemo vidjeti da je dodana jedna datoteka:

Za dodavanje više datoteka može se koristiti sljedeći unos naredbe (imajte na umu da smo dodali još jednu datoteku u svrhu demonstracije):

git add myfile2 myfile3

Možete koristiti git add rekurzivno, ali budite oprezni s ovom naredbom. Postoje određene datoteke (poput prevedenih datoteka) koje se obično spremaju izvan Git spremišta.

Ako rekurzivno koristite naredbu add, ona će dodati sve takve datoteke ako postoje u vašem spremištu.

Brisanje fajlova

Ali pokretanje jednostavne git rm naredbe uklonit će datoteku ne samo iz Gita, već i iz vašeg lokalnog datotečnog sustava! To

Git je prestao pratiti datoteku, ali sama datoteka je još uvijek na vašem lokalnom sistemu, pokrenite sljedeću naredbu:

git rm -cached

Urežite promjene

Nakon što postavite svoje datoteke, možete ih predati Gitu. Zamislite da je urezivanje hvatanje određene točke na koju se možete vratiti kako biste pristupili svom spremištu u ovom trenutku.

Za svako urezivanje možete povezati poruku koja je dodana sa -m prefiksom:

git commit -m "Moje prvo urezivanje"

Napunite svoje urezivanja korisnim porukama jer će vam to pomoći da utvrdite šta ste promijenili u tom urezivanju.

Izbegavajte takođe opšte poruke poput " Greške ispravljene". Ako imate alatku za praćenje zadataka, poruke možete dodati kao “ Ispravljena greška # 234».

Dobra je praksa koristiti naziv grane ili naziv funkcije kao prefiks za poruku urezivanja. Na primjer, " Upravljanje imovinom: Dodana funkcija za generiranje PDF datoteka datoteka"To je smislena poruka.

Git identificira urezivanja dodavanjem dugog heksadecimalnog broja svakom urezivanju. U pravilu ne morate kopirati cijeli redak, prvih 5-6 znakova je dovoljno za definiranje urezivanja.

Imajte na umu da je na snimku zaslona naše prvo urezivanje identificirano kodom 8dd76fc.

Dalje urezivanje

Sada promijenimo nekoliko datoteka nakon našeg prvog urezivanja. Nakon što ih promijenimo, vidjet ćemo da je kao rezultat izvršavanja naredbe git status Git otkrio promjene u datotekama koje prati:

Promjene praćenih datoteka napravljenih u zadnjem urezivanju možete provjeriti naredbom git diff. Ako želite vidjeti promjene u određenoj datoteci, koristite naredbu git diff :

Morate ponovo dodati ove datoteke da biste implementirali promjene u praćene datoteke za sljedeće urezivanje. Sve datoteke koje pratite možete dodati pokretanjem naredbe:

Ovu naredbu možete izbjeći korištenjem -a prefiksa za naredbu git commit, koja će dodati sve promjene u datoteke koje se prate.

Ovaj proces je, međutim, vrlo opasan jer može naštetiti projektu. Na primjer, recimo da ste greškom otvorili datoteku i promijenili je.

Ako selektivno dodijelite datoteke, primijetit ćete promjene u svakoj datoteci. No, ako svom predavanju dodate prefiks -a, sve će datoteke biti predane i nećete moći identificirati moguće greške.

Nakon što postavite datoteke, možete početi urezivati. Spomenuo sam da svako urezivanje može imati poruku povezanu s njim, koju unosimo s prefiksom -m.

Međutim, moguće je unijeti poruku u više redova pomoću naredbe git commit koja otvara interaktivni obrazac za pisanje:

Upravljanje projektima

Da biste vidjeli povijest svog projekta, možete pokrenuti sljedeću naredbu:

Ovo će pokazati cijelu historiju projekta, koja je lista svih obaveza i informacija o njima. Podaci o urezivanju uključuju raspršivanje urezivanja, autora, vrijeme i poruku urezivanja. Postoje različite opcije git dnevnika koje možete istražiti kada shvatite granu u Gitu.

Da biste vidjeli detaljne informacije o određenom urezivanju i datotekama koje su promijenjene, pokrenite sljedeću naredbu:

git show

gdje Ovo heksadecimalni broj povezan sa urezivanjem. Budući da je ovaj vodič namijenjen početnicima, nećemo govoriti o tome kako se vratiti na stanje određene predaje ili kako upravljati granama.

Postavljanje koda u oblak

Sada kada ste naučili upravljati kodom na svom sistemu, vrijeme je da ga postavite u oblak.

Github je vrlo poznata platforma za spremanje, distribuciju i upravljanje izvornim kodom za projekte otvorenog koda. Ovu uslugu koriste mnogi programeri širom svijeta, među kojima postoje velike kompanije poput Microsofta, RedHat -a i mnogih drugih, kao i stotine programera mnogih popularnih projekata.

Platforma ne pruža samo mogućnosti pregleda i distribucije koda, već i istoriju verzija, alate za zajednički razvoj, alate za pružanje dokumentacije, izdanja izdanja i povratne informacije. Najbolji dio je što na Gihub -u možete ugostiti javne i privatne projekte. U ovom članku ćemo pogledati kako koristiti Github za hostovanje vašeg projekta. Takoreći, github je za početnike.

Dakle, recimo da imate vlastiti projekt i želite objaviti njegov kôd na Githubu u javnoj domeni kako bi ga drugi korisnici mogli vidjeti i sudjelovati u razvoju. Prvo što trebate učiniti je stvoriti račun.

1. Otvorite nalog

Da biste stvorili novi račun na web mjestu, otvorite početnu stranicu GitHub i odmah možete unijeti podatke za novi račun... Morate unijeti korisničko ime, e -adresu i lozinku:

Kada završite sa unosom, pritisnite dugme. "Prijavite se besplatno":

U sljedećem koraku morate odabrati tip spremišta. Javna spremišta su besplatna, ali ako želite stvoriti privatno spremište gdje je kôd dostupan samo vama, morat ćete platiti 7 USD mjesečno.

Račun je spreman i bit ćete preusmjereni na stranicu na kojoj možete stvoriti svoj prvi projekt. No, prije nego što to učinite, morate potvrditi svoju adresu e -pošte. Da biste to učinili, otvorite poštanski sandučić i slijedite vezu u pismu iz Github -a.

Nije potrebna github konfiguracija, dovoljno je samo nekoliko klikova.

2. Kreiranje spremišta

Na stranici koja se otvori, ovo je glavna stranica za ovlaštene korisnike, kliknite gumb "Pokreni projekat":

Spremište možete odmah pokrenuti stvaranjem datoteke Readme tako što ćete potvrditi okvir "Inicijalizirajte ovo spremište pomoću README -a" pri dnu stranice. Takođe možete izabrati licencu:

Kad završite, odaberite "Kreiraj projekat", bit će kreiran novi projekt sa README datotekom koja sadrži opis i datoteku licence.


3. Dodavanje grana

Github grane omogućuju vam rad s više verzija projekta istovremeno. Prema zadanim postavkama, kada kreirate spremište, kreira se glavna grana, ovo je glavna radna grana. Mogu se stvoriti dodatne grane, na primjer, za testiranje softvera prije nego što se objavi u glavnoj grani. Tako je moguće istovremeno razvijati proizvod i korisnicima pružati stabilnu verziju. Također možete stvoriti zasebne grane za verziju programa za različite sisteme.

Trenutna grana je naznačena u gornjem lijevom kutu iza riječi "Podružnica". Da biste stvorili novu granu, jednostavno proširite ovu listu i počnite upisivati ​​njeno ime:

Sama web stranica će vam ponuditi stvaranje nove podružnice, odaberite "Kreiraj granu".

Odmah nakon kreiranja radit ćete na grani koju ste upravo stvorili.

4. Izmjena datoteka i urezivanja

Sve promjene u datotekama na Githubu vrše se pomoću urezivanja. Urezivanje se vrši uvođenjem samih popravaka i opisivanjem tih popravaka. To je potrebno kako biste znali što ste i kada promijenili, a također i olakšalo praćenje rada tima. Riječ commit se može prevesti kao "predati". To jest, možemo promijeniti nekoliko datoteka, a zatim ih urezati. Izmijenimo na primjer datoteku README. Da biste to učinili, pronađite dugme s četkom na desnoj strani ploče i kliknite na njega:

Otvorit će se uređivač teksta u koji možete unijeti ispravke koje želite:

Nakon što ste učinili sve što vam je potrebno, morate popuniti polje "Posvetuj se" pri dnu stranice. Ukratko opišite šta se promijenilo, a zatim kliknite "Urezivanje promjena":

Ove promjene bit će unesene u trenutnu granu projekta, budući da trenutno radimo s testiranjem, tada će se promjene poslati tamo.

5. Podnošenje zahtjeva za povlačenjem

GitHub za početnike može izgledati neodoljivo zbog ovih funkcija, ali vrlo je zgodan kad to shvatite. Zahtjev za povlačenjem ili zahtjev za povlačenjem je funkcija pomoću koje svaki programer može zatražiti od drugog, poput kreatora spremišta, da pregleda njegov kôd i doda ga u glavni projekt ili granu. Alat za upiti za spajanje koristi alat za usporedbu razlika, tako da možete vidjeti sve promjene, one će biti podcrtane u drugoj boji. Zahtjev za povlačenjem može se kreirati odmah nakon kreiranja urezivanja. Pošaljimo zahtjev za povlačenje iz naše grane za testiranje u glavnu granu. Prvo otvorite karticu "Povuci zahtjev".

Kliknite ovdje "Kreiraj zahtjev za povlačenje":

U ovom prozoru možete vidjeti sve promjene, sada vidimo da je dodana linija:

6. Pregledajte i odobrite zahtjeve za spajanje

Sada, na istoj kartici Zahtjevi za povlačenjem, vidimo novonastali zahtjev za povlačenje i samo ga moramo prihvatiti klikom na "Spajanje zahtjeva za povlačenje":

Ali ako je ovaj zahtjev došao od druge osobe, trebali biste provjeriti što je tamo promijenio i je li potrebno, da biste to učinili, samo kliknite na opis zahtjeva i vidjet ćete već poznati prozor za pregled promjena:

Kôd će se zatim uvesti u glavnu granu, a grana za testiranje može se sigurno ukloniti.

7. Izvještaji o greškama

Prikladno, moguće je koristiti GitHub ne samo za razvoj i upravljanje kodom, već i za povratne informacije korisnika. Na kartici "Problem" korisnici mogu objavljivati ​​o problemima s kojima se susreću dok koriste vaš proizvod. Otvorite karticu "Problemi", i pritisnite dugme "Novi broj":

8. Izdanja

Posljednje što ćemo danas pogledati su izdanja. Kad proizvod dosegne određenu fazu, možete objaviti izdanje tako da korisnici i možete biti sigurni da je tamo sve stabilno i da nitko ništa nije slomio s neispravnim zahtjevom za povlačenjem u Masteru. Prvo morate otići na glavnu stranicu projekta, a zatim na karticu "Izdanja":

Na ovoj stranici morate navesti verziju u polju "Verzija oznake" nakon čega slijedi naziv izdanja i kratak opis. Ako ste sastavili arhive s binarnim datotekama, onda ih također morate priložiti ovdje. Zatim pritisnite "Kreiraj izdanje":

Nakon kreiranja izdanja, bit će kreirana sljedeća stranica:

zaključci

U ovom smo članku pogledali kako koristiti GitHub za hostiranje i upravljanje vašim projektom. Cijeli sistem je na engleskom jeziku, pa je osnovno znanje jezika vrlo poželjno, ali čak i bez njih rad s githubom neće biti jako težak. Nadam se da su vam ove informacije bile korisne. Ako vas zanima kako raditi s Gitom iz komandna linija, pogledajte članak za početnike.

Detaljan uvod u rad sa Gitom

Šta je Git i zašto mi je potreban?

Git je distribuirani sistem kontrole verzija koji vam omogućava da sačuvate sve promjene u datotekama pohranjenim u spremištu. Promene se čuvaju kao snimci, koji se nazivaju urezivanja, a koji se mogu objaviti na mnogim serverima. Zamislite to kao standardni oblak za izradu sigurnosnih kopija na steroidima - ne možete samo vratiti kôd u slučaju kvara, već i vratiti kôd u bilo koje od prethodnih spremljenih stanja. Također možete lako komunicirati s drugim programerima - opet, kao što nekoliko ljudi može raditi na istoj datoteci u Google dokumentima, tako i programeri mogu istovremeno raditi na istom spremištu i spremiti svoje promjene.

S obzirom na sve njegove prednosti, Git je nezamjenjiv alat za svakoga tko se ili će tek baviti razvojem. U ovom ćemo članku pregledati najkorisnije Git naredbe i kada ih koristiti. Takođe će vam pomoći da nadopunite svoje znanje ako ste već upoznati s Gitom.

Kako raditi s Gitom

U Gitu je dostupno mnogo naredbi, pa je korisno podijeliti ih po temama / razlozima korištenja. Prvo ćemo pogledati rad s Gitom na lokalnoj mašini, budući da se većina operacija tamo odvija, a zatim ćemo preći na format za više korisnika.

S Gitom možete raditi i kroz naredbenu liniju i kroz grafičko sučelje poput GitHub Desktop -a. Iako naredbena linija može zastrašiti programere početnike, ipak je bolje naučiti jer pruža više opcija od mnogih alata za sučelje.

Git naredbe obično imaju oblik git -a<команда> <аргументы>gdje argument može biti putanja datoteke. Naredbe mogu imati i opcije koje su označene kao -<опция>ili -<однобуквенная опция>... Omogućuju vam da detaljnije prilagodite radnje naredbe. U ovom članku naredbe će biti predstavljene na općenit način, dakle sve što se nalazi<>, morat ćete zamijeniti vlastitim vrijednostima.

Ako ne znate kako koristiti naredbu, možete otvoriti priručnik s git help<команда>a ako vam samo treba podsjetnik upotrijebite git<команда>-h ili git<команда>--help (--help i -h su ekvivalentni).

Priprema Gita

Instaliranje Gita

Korisnici operativnog sistema Windows mogu ga preuzeti odavde.

Na macOS -u (OS X), Git dolazi kao dio alata naredbenog retka Xcode, pa ćete ih morati instalirati. Da biste provjerili ima li Git, otvorite terminal i upišite git --version da provjerite verziju.

Ako koristite Linux, koristite sudo apt install git-all (distribucije zasnovane na Debianu) ili sudo dnf install git-all (zasnovane na RPM-u).

Postavljanje konfiguracijske datoteke

Prva stvar koju trebate učiniti nakon instaliranja Gita je postavljanje vašeg korisničkog imena i e -pošte jer se oni koriste za identifikaciju i pohranjeni su u svim snimkama koje snimite. Ove postavke, zajedno sa svim ostalim, pohranjene su u konfiguracijskoj datoteci.

Možete urediti datoteku.gitconfig izravno uređivačem teksta ili upotrijebiti naredbu git config --global --edit, a možete urediti i pojedina polja pomoću naredbe git config --global<поле> <значение>- zanimaju nas polja user.name i user.email.

Uređivač teksta možete konfigurirati i za pisanje poruka urezivanja pomoću polja core.editor. U početku se koristi sistemski zadani uređivač, kao što je vi za Linux / Mac. Polje commit.template vam omogućuje da navedete predložak koji će se koristiti pri svakom urezivanju.

Postoji mnogo drugih polja, ali jedno od najkorisnijih je alias, koji povezuje naredbu sa pseudonimom. Na primjer git config --global alias.st "status -s" vam omogućava da koristite git st umjesto git status -s

Naredba git config --list ispisat će sva polja i njihove vrijednosti iz konfiguracijske datoteke.

Kreirajte git spremište

Da biste pokrenuli novo git spremište, možete koristiti naredbu git init ili, ako želite kopirati postojeće, git klon<адрес репозитория> .

Git urezivanje historije

Git pohranjuje podatke kao zbirku lakih snimaka poznatih kao urezivanja. Oni pohranjuju stanje datotečnog sustava u određenom trenutku, kao i pokazivač na prethodna predavanja. Svaka predaja sadrži jedinstveni kontrolni zbroj - identifikator koji Git koristi za upućivanje na predaju. Da bi pratio povijest, Git zadržava HEAD pokazivač koji ukazuje na prvo urezivanje (slijedimo lanac urezivanja obrnutim redoslijedom da bismo došli do prethodnih urezivanja).

Možemo se pozivati ​​na urezivanje ili putem njegovog kontrolnog zbira ili njegovog položaja u odnosu na HEAD, na primjer HEAD ~ 4 se odnosi na urezivanje koje je 4 urezivanja prije HEAD -a.

Git sistem datoteka

Git prati datoteke u tri glavna odjeljka:

  • radni direktorijum (sistem datoteka vašeg računara);
  • scensko područje (scensko područje, pohranjuje sadržaj sljedeće naredbe);
  • HEAD (posljednje urezivanje u spremištu).

Sve osnovne naredbe za rad s datotekama svode se na razumijevanje kako Git upravlja s ova tri odjeljka. Uobičajeno je zabluda da se u scenskom prostoru čuvaju samo promjene. Bolje je da ova tri odjeljka smatrate zasebnim datotečni sistemi, od kojih svaka sadrži vlastite kopije datoteka.

Pregled promjena u datotečnim sistemima

Naredba git status prikazuje sve datoteke koje se razlikuju između tri odjeljka. Datoteke imaju 4 stanja:

  1. Bez pratnje - nalazi se u radnom direktoriju, ali nema verzija u HEAD -u ili području za uprizorenje (Git nije svjestan datoteke).
  2. Izmijenjeno - postoji novija verzija u radnom direktoriju nego u HEAD -u ili području za upis (promjene nisu u sljedećem urezivanju).
  3. Postepeno - postoji novija verzija u radnom direktoriju i području s faznim datotekama u odnosu na onu pohranjenu u HEAD -u (spremna za urezivanje).
  4. Nema promjena - jedna verzija datoteke u svim odjeljcima, tj. Posljednje urezivanje sadrži trenutnu verziju.

Napomena Datoteka se može i "izmijeniti" i "pripremiti" ako je verzija u radnom direktoriju novija od područja za postavljanje, što je zauzvrat novije od verzije u HEAD -u.

Možemo koristiti opciju -s za promjenu statusa kako bismo dobili kompaktniji izlaz (red po datoteci). Ako se datoteka ne prati, hoće li ?? ; ako je promijenjen, tada će mu ime biti crveno, a ako je pripremljeno, bit će zeleno.

Da biste vidjeli same promjene, a ne promijenjene datoteke, možete koristiti sljedeće naredbe:

  • git diff - poređenje radnog imenika sa područjem pripremljenih datoteka;
  • git diff --staged -uporedite područje faziranih datoteka sa HEAD -om.

Ako koristite argument<файл/папка>tada će diff pokazati promjene samo za navedene datoteke / mape, na primjer git diff src /.

Ažuriranje sistema datoteka

Git dodaj naredbu<файл/папка>ažurira područje postavljenih datoteka verzijama datoteka / mapa iz radnog direktorija.

Naredba git commit ažurira HEAD novim urezivanjem, koje snima snimke datoteka u području za postavljanje.

Radnja naredbe Git reset<коммит>sastoji se od tri potencijalna koraka:

  1. Pomaknite pokazivač HEAD na<коммит>(na primjer, kada vratite urezivanje, radni direktorij i područje postavljanja imat će novije verzije datoteka od HEAD -a). Također će se pokazivač grane HEAD premjestiti na ovu predaju.
  2. Ažurirajte područje postavljanja sa sadržajem urezivanja. U tom će slučaju sadržavati samo radni direktorij najnovije verzije datoteke.
  3. Ažurirajte radni direktorij sa sadržajem područja za postavljanje. S tim morate biti oprezni jer će promjene datoteka na kraju biti uništene.

Prema zadanim postavkama, naredba git reset izvodi samo korake 1 i 2, no njeno ponašanje se može promijeniti korištenjem opcija --soft (samo 1 korak) i --hard (svi koraci).

Ako prođete putanju do datoteke / mape, naredba će se izvršiti samo za njih, na primjer git reset --soft HEAD ~ 1 src /.

Git checkout HEAD naredba<файл>proizvodi isti rezultat kao i git reset -hard HEAD<файл>- prepisuje verziju datoteke u pripremljenu datoteku i radni direktorij verzijom iz HEAD -a, odnosno poništava promjene nakon zadnjeg urezivanja.

S druge strane, git checkout<файл>(već bez HEAD -a) prepisuje verziju datoteke u radnom direktoriju s verzijom u području za postavljanje, odnosno poništava promjene od posljednje pripremljene verzije.

Konačno, git rm<файл>otkazuje praćenje datoteke i uklanja je iz radnog imenika, opcija --cached će spremiti datoteku.

Zanemarivanje datoteka

Često ne želimo da Git prati sve datoteke u spremištu, jer one mogu uključivati:

  • datoteke s osjetljivim podacima poput lozinki;
  • velike binarne datoteke;
  • montažne datoteke koje se generiraju nakon svake kompilacije;
  • OS / IDE specifične datoteke poput .DS_Store za macOS ili .iml for IntelliJ IDEA- potrebno nam je spremište da što manje ovisi o sistemu.

Datoteka .gitignore se koristi za zanemarivanje. Za označavanje datoteka koje želimo zanemariti možemo koristiti uzorke pretraživanja (zamislite ih kao pojednostavljene regularne izraze):

  • / ___ - izbjegava rekurzivnost - podudara datoteke samo u trenutnom direktoriju;
  • __ / - podudara se sa svim datotekama u navedenom direktoriju;
  • * ___ - podudara se sa svim datotekama sa navedenim krajem;
  • ! - zanemarivanje datoteka koje odgovaraju navedenom predlošku;
  • [__] - podudara se sa bilo kojim znakom navedenim u uglastim zagradama;
  • ?? - odgovara bilo kojem znaku;
  • / ** / - podudara ugniježđene direktorije, na primjer a / ** / d odgovara a / d, a / b / d, a / b / c / d, itd.

Čak možemo koristiti obrasce pretraživanja kada specificiramo datoteku / mapu u drugim naredbama. Na primjer git add src / *. Css će dodati sve .css datoteke u src folder.

Obavezuje

Budući da su urezivanja okosnica povijesti verzija, ne škodi naučiti nešto više o njima.

Naredba git commit otvorit će uređivač teksta za unos poruke urezivanja. Takođe prihvata nekoliko uobičajenih argumenata:

  • -m vam omogućava da napišete poruku zajedno sa naredbom bez otvaranja uređivača. Na primjer git commit -m "Ispravljena greška";
  • -a premješta sve praćene datoteke u područje za postavljanje i uključuje ih u urezivanje (omogućava vam da preskočite git add prije urezivanja);
  • --amend zamjenjuje posljednje urezivanje novim izmijenjenim urezivanjem, što je korisno ako ste poruku zadnjeg urezivanja upisali pogrešno ili ste zaboravili uključiti neke datoteke u nju.

Nekoliko savjeta koje morate poslušati:

  • Često se obavezujte: Nećete moći vratiti svoje promjene ako nemate na šta vratiti.
  • Jedna promjena, jedno urezivanje: Ne stavljajte sve nepovezane promjene u jedno urezivanje, odvojite ih kako biste olakšali vraćanje.
  • Format poruke: naslov mora biti imperativno raspoložen, kraći od 50 znakova i mora logički nadopunjavati izraz koji će ovo urezivanje ___ (ovo urezivanje će popraviti greške - ovo urezivanje će popraviti greške). Poruka treba objasniti zašto je urezivanje napravljeno, a samo urezivanje pokazuje šta se promijenilo. detalji o načinu pisanja poruka urezivanja.
  • (Opcionalno) Nemojte praviti manje promjene: u velikom spremištu mnoga mala urezivanja mogu začepiti istoriju. Smatra se dobrom praksom da se takva urezivanja naprave tokom razvoja, a kada se dodaju u veliko spremište, kombiniraju ih u jedno urezivanje.

Pregled promjena u istoriji

Možete koristiti naredbu git log za pregled historije prethodnih urezivanja obrnutim hronološkim redoslijedom. Na njega se mogu prenijeti različite opcije:

  • -p prikazuje promjene u svakom urezivanju;
  • --stat prikazuje skraćene statistike za urezivanja, kao što su promijenjene datoteke i broj dodanih / uklonjenih redova u svakoj od njih;
  • -n emisije n poslednja urezivanja;
  • --since = ___ i --until = ___ vam omogućava da filtrirate urezivanja po vremenskom periodu, na primjer --since = "2019-01-01" će prikazivati ​​urezivanja od 1. januara 2019;
  • --pretty vam omogućava da navedete format zapisa (na primjer, --pretty = oneline), možete koristiti i --pretty = format za dodatna prilagođavanja, na primjer --pretty = format: "% h% s" ;
  • --grep i -S filter urezuje s porukama / promjenama koda koje sadrže navedeni niz, na primjer, git log -S ime_funkcije omogućuje vam da vidite dodavanje / uklanjanje funkcije;
  • --no-merges preskače urezivanja spajanja;
  • branch1..branch2 vam omogućava da vidite koja urezivanja iz grane 2 nisu u grani 1 (korisno pri spajanju grana). Na primjer, git log master..test će pokazati koji urezi iz test grane nisu u masteru (o granama ćemo govoriti kasnije).
  • --levo-desna grana1 ... grana2 prikazuje urezivanja koja su u grani 1 ili grani 2, ali ne oboje; znak< обозначает коммиты из ветка1 , а >- iz grane 2. Imajte na umu: koriste se tri boda, a ne dvije;
  • -L preuzima početak, završetak: datoteka ili: funkcija: datoteka argument i prikazuje povijest promjena prenesenog skupa linija ili funkcije u datoteci.

Još jedna korisna naredba je git krivi<файл>, koji za svaki red datoteke prikazuje autora i kontrolni zbroj zadnjeg urezivanja koje je promijenilo tu liniju. -L<начало>, <конец>dozvoljava vam da ograničite ovu naredbu na navedene retke. Ovo se može koristiti, na primjer, za utvrđivanje koje je urezivanje izazvalo određenu grešku (tako da je možete vratiti).

Konačno, postoji naredba git grep koja pretražuje sve datoteke u povijesti urezivanja (ne samo radni direktorij poput grepa) za dani regexp. Opcija -n prikazuje odgovarajući broj retka u datoteci za svako podudaranje, a --count prikazuje broj podudaranja za svaku datoteku.

Napomena Nemojte griješiti git grep sa git log --grep! Prvi traži datoteke među urezivanjima, a drugi gleda poruke dnevnika.

Udaljeni serveri

Do sada smo razgovarali samo o korištenju Gita na lokalnom računaru. Međutim, možemo sačuvati povijest urezivanja udaljenih spremišta, koja se može pratiti i ažurirati (zamislite ih kao udaljene sigurnosne kopije oblaka naše povijesti urezivanja).

Naredba git remote -v navodi udaljena spremišta koja pratimo i imena koja smo im dodijelili.

Kada koristite naredbu git clone ne samo da preuzimamo kopiju spremišta, već i implicitno pratimo udaljeni server koji je uključen navedenu adresu i koje se naziva porijeklo.

Najčešće korištene naredbe:

  • git daljinski dodaj<имя> - dodaje udaljeno spremište sa datim imenom;
  • git daljinsko uklanjanje<имя>- briše udaljeno spremište s tim imenom;
  • git daljinsko preimenovanje<старое имя> <новое имя>- preimenuje udaljeno spremište;
  • git udaljeni set-url<имя> - dodjeljuje novu adresu spremištu imenovanom;
  • git daljinska emisija<имя>- prikazuje informacije o spremištu.

Sljedeće naredbe rade s udaljenim granama:

  • git fetch<имя> <ветка>- dobiva podatke iz grane datog spremišta, ali ne spaja promjene;
  • git pull<имя> <ветка>- spaja podatke iz grane datog spremišta;
  • git push<имя> <ветка>- Dostavlja promjene grani datog spremišta. Ako lokalna podružnica već prati udaljenu, jednostavno možete upotrijebiti git push ili git pull.

Tako nekoliko ljudi može zatražiti promjene od poslužitelja, napraviti izmjene u lokalnim kopijama i zatim ih prebaciti na udaljeni server, što omogućava međusobnu interakciju unutar istog spremišta.

Grananje

Sve je dobro i sjajno ako svaki programer radi na projektu u različito vrijeme. Gore prikazani dijagrami samo su pokazali situacije u kojima je originalno spremište ili lokalna kopija izmijenjena, a ne rad više ljudi.

To nas vodi do ključna karakteristika Git - grananje, mogućnosti za rad različite verzije projekt. To znači da će se umjesto jedne liste sa uređenim urezivanjem historija u određenim tačkama razlikovati (zbog čega izgleda kao drvo). Svaka grana u Gitu sadrži lagani HEAD pokazivač na posljednje urezivanje na toj grani, omogućavajući vam da kreirate mnoge grane bez dodatnih troškova. Savjet: Imenujte granu prema funkcionalnosti koju u njoj razvijate. Zadana grana se zove master.

Dakle, imamo zajednički pokazivač HEAD i HEAD za svaku granu. Dakle, prebacivanje između grana uključuje samo kretanje HEAD u HEAD -u odgovarajuće grane.

Standardne komande:

  • git branch<имя ветки>- stvara novu granu s HEAD -om koji pokazuje HEAD... Ako ne prenesete argument<имя ветки>, tada će naredba prikazati popis svih lokalnih grana;
  • git checkout<имя ветки>- prelazi na ovu granu. Možete proći -b opciju za kreiranje nove grane prije prebacivanja;
  • git branch -d<имя ветки>- briše granu.

I naše lokalno spremište i udaljeno mogu imati mnogo grana, pa kada pratite udaljeno spremište, ono zapravo prati udaljenu granu (git clone povezuje vašu glavnu granu s ishodišnom / glavnom granom udaljenog spremišta).

Povezivanje na udaljenu granu:

  • git branch -u<имя удалённого репозитория>/<удалённая ветка>- veže trenutnu granu za navedenu udaljenu granu;
  • git checkout --track<имя удалённого репозитория>/<удалённая ветка>- analog prethodne komande;
  • git checkout -b<ветка> <имя удалённого репозитория>/<удалённая ветка>- stvara novu lokalnu podružnicu i počinje pratiti udaljenu;
  • git branch --vv -prikazuje lokalne i praćene udaljene grane;
  • git checkout<удалённая ветка>- stvara lokalnu granu s istim imenom kao udaljena i počinje je pratiti.

Općenito, git checkout se odnosi na promjenu lokacije na koju pokazuje HEAD grane, što je slično načinu na koji git reset pomiče ukupnu HEAD.

Sakrij se

Postoji jedna suptilnost - pri promjeni grana Git zahtijeva da radno stanje bude čisto, odnosno da se moraju promijeniti sve promjene u datotekama koje se prate.

Pribl. transl. Ovo nije sasvim tačno. Pod nekim okolnostima, Git može automatski prebaciti neobaveznu promjenu u drugu granu.

Međutim, ponekad imate nedovršene promjene koje se ne mogu izvršiti. U takvoj se situaciji mogu spremiti i sakriti pomoću naredbe git stash. Za poništavanje promjena koristite git stash apply.

Možda ćete htjeti izbrisati sve promjene koje ste unijeli. U ovom slučaju koristite naredbu git clean. Opcija -d će također ukloniti datoteke bez pratnje. Savjet: dodajte opciju -n da vidite što se događa kada pokrenete git clean bez direktnog korištenja.

Kombinovanje grana

Nakon što smo razgovarali o granama i kako se s njih prebacivati, vrijeme je za razgovor o tome kako ih možete spojiti nakon razvoja. Grana u koju želimo spojiti promjene zvat će se glavna grana, a grana iz koje ćemo ih spojiti nazvat će se grana teme. Postoje dva načina za promjenu iz jedne grane u drugu: spajanje i premještanje.

Spoji

Uključuje stvaranje novog urezivanja koje se temelji na predaji zajedničkog pretka dviju grana i ukazuje na oba HEAD -a kao prethodna urezivanja. Za spajanje idemo na master i koristimo naredbu git merge<тематическая ветка> .

Ako obje grane promijene isti dio datoteke, dolazi do sukoba spajanja - situacije u kojoj Git ne zna koju verziju datoteke treba spremiti, pa morate sami riješiti sukob. Da biste vidjeli sukobljene datoteke, koristite status git.

Nakon otvaranja takvih datoteka vidjet ćete slične oznake za rješavanje sukoba:

<<<<<<< HEAD:index.html Everything above the ==== is the version in master. ======= Everything below the ==== is the version in the test branch. >>>>>>> test: index.html

Zamijenite sve u ovom bloku verzijom koju želite zadržati i pripremite datoteku. Nakon što su svi sukobi riješeni, možete upotrijebiti git commit za dovršetak spajanja.

Selidba

Umjesto spajanja dviju grana s urezivanjem stapanja, premještanje ponavlja predavanje grane teme kao skup novih uzlaznih predaja, što rezultira čistijom poviješću urezivanja.

Za premještanje se koristi naredba git rebase.<основная ветка> <тематическая ветка>koji reproducira promjene teme teme na glavnoj; HEAD grane teme ukazuje na posljednje ponovljeno urezivanje.

Moving vs. spajanje

Nakon spajanja, dnevnik s poviješću može izgledati prilično neuredno. S druge strane, premještanje vam omogućuje da prepisujete historiju na normalan, dosljedan način.

Pa zašto se spajati ako možete stalno koristiti kretanje? Nažalost, premještanje nije lijek za zbunjivanje dnevnika, budući da se premješteni urezi zapravo razlikuju od izvornih, iako imaju istog autora, poruku i promjene.

Zamislimo scenario:

  • Na svojoj grani kreirate više urezivanja i spajate ih u glavnu granu.
  • Neko drugi odlučuje to riješiti na osnovu vaših obaveza.
  • Odlučili ste premjestiti urezivanja i gurnuti ih na server.
  • Kada netko pokuša spojiti svoj rad na temelju vaših izvornih urezivanja, završava s dvije paralelne grane s istim autorom, postovima i promjenama, ali različitim urezivanjima.

Pa evo savjeta:

Promjenjujte samo svoju privatnu lokalnu podružnicu - ne gurajte obveze od kojih ovisi netko drugi.

Vraćanje unaprijed - vraćanje i poništavanje

Slična rasprava o tome šta je najbolje koristiti nastaje kada želite poništiti urezivanje. Git naredba za vraćanje<коммит>stvara novo urezivanje koje poništava promjene, ali čuva povijest, dok se git resetira<коммит>pomera pokazivač HEAD, pružajući čistiju istoriju (kao da se ovo urezivanje nikada nije dogodilo). Važno je napomenuti da to također znači da se više ne možete vratiti na te promjene, na primjer, ako i dalje odlučite da poništavanje urezivanja nije potrebno. Čistač ne znači bolje!

Hajde da rezimiramo

U ovom trenutku imate gotovo sve što vam je potrebno za početak rada s Gitom. Ispod su neki (izborni) napredni savjeti za veću kontrolu nad urezivanjima i istorijom. Osim toga, u nastavku ćemo se ukratko dotaknuti GitHub - jedne od najpoznatijih platformi za rad s Gitom, koja bi vam mogla biti korisna.

Github

GitHub je platforma koja ugošćuje Git spremišta na više servera. Kao korisnik GitHub-a, možete držati svoja udaljena spremišta na njihovim poslužiteljima, kao i doprinositi drugim spremištima otvorenog koda. GitHub proširuje upotrebu Gita nekim novim značajkama.

Na primjer, možete forkirati udaljeno spremište, odnosno stvoriti vlastitu kopiju spremišta na GitHub poslužitelju. Ovo je korisno u slučajevima kada nemate dozvolu za kreiranje grane u originalnom spremištu. Kada koristite git clone, vaše lokalno spremište će pratiti udaljenu viljušku kao ishodište, a originalno spremište kao uzvodno.

Nakon toga ćete možda morati spojiti granu teme vašeg udaljenog spremišta u glavnu granu originala. Da biste to učinili, možete stvoriti novi zahtjev za povlačenjem, gdje GitHub provjerava ima li sukoba prije nego što vam dozvoli spajanje. Često postoje i druge provjere prije spajanja, poput pregleda i odobravanja koda, ili čak pokretanja testova. U zahtjevu možete razgovarati o kodu, a svi urezi koje pošaljete udaljenoj grani teme automatski će se dodati zahtjevu, čak i ako je kreiran prije tih urezivanja.

Napredna upotreba: Interaktivna priprema

Možete prikladno kontrolirati područje za postavljanje (na primjer, pri urezivanju više malih urezivanja umjesto jednog velikog) pomoću interaktivne konzole koju možete pokrenuti git add -i. U njemu je dostupno 8 naredbi:

  • status - za svaku datoteku prikazuje kratak opis onoga što (nije) pripremljeno;
  • ažuriranje - priprema praćene datoteke;
  • vratiti - ukloniti jednu ili više datoteka iz pripremljene oblasti;
  • add untracked - priprema datoteku bez oznake;
  • zakrpa - priprema samo dio datoteke (korisno kada ste, na primjer, promijenili nekoliko funkcija, ali želite podijeliti promjene na nekoliko urezivanja). Nakon odabira datoteke, bit će vam prikazani njezini fragmenti i predstavljene će vam moguće naredbe: Stage this trun? ... Mogu li ući? vidjeti šta svaki tim radi;
  • diff - prikazuje popis pripremljenih datoteka i omogućuje vam da vidite promjene za svaku od njih;
  • quit - napušta interaktivnu konzolu;
  • help - prikazuje kratak opis svake naredbe.

* Pored datoteke znači da će naredba promijeniti svoj status (pripremljeno / nepripremljeno ovisno o tome ažurira li se ili vraća unatrag). Ako pritisnete Enter bez upisivanja bilo čega u bilo koji od podmenija naredbi, sve će datoteke otići u (ne) pripremljeno stanje.

Imajte na umu da je stvaranje zakrpa (priprema samo dijela datoteke) dostupno ne samo u interaktivnoj konzoli, već i putem naredbe git add -p.

Napredna upotreba: Promjena historije

Za veću kontrolu nad poviješću urezivanja lokalne grane, možete koristiti naredbu git rebase -i HEAD ~ n koja će otvoriti interaktivnu konzolu za premještanje skupa posljednjih n urezivanja, navedene po redoslijedu od najstarijih do najnovijih (to jest po redoslijedu po kojem će biti premještene). Na ovaj način možete "uređivati ​​historiju", ali zapamtite da se izvorna urezivanja ne mogu mijenjati, samo premjestiti.

Redoslijed urezivanja možete promijeniti promjenom redoslijeda u kojem su navedeni.

Promijenite poruku urezivanja / podijelite predaje

Naredba edit se koristi za specificiranje urezivanja koje želite promijeniti. Zatim, kada Git napravi potez, zaustavit će se na tom urezivanju. Nakon toga možete koristiti git commit --amend za promjenu poruke ili pripremu zaboravljenih datoteka. Ako želite podijeliti urezivanje, nakon zaustavljanja upišite git reset HEAD ^ (kao rezultat toga, HEAD će biti vraćen za jedno urezivanje i sve datoteke promijenjene u ovom urezivanju će otići u nepripremljeni status). Zatim možete urezati datoteke u zasebna urezivanja na uobičajen način.

Kada završite uređivanje, unesite git rebase --continue.

Prepisivanje više urezivanja

Ponekad ćete možda morati prebrisati više urezivanja - u takvim slučajevima možete koristiti git filter -branch. Na primjer, za brisanje slučajno urezane datoteke možete upisati git filter-branch --tree-filter "git rm -f<имя файла>"GLAVA. Imajte na umu, međutim, da ovo pomiče cijelu priču.

Spajanje više urezivanja

Tokom rada na nova funkcija u projektu možete postupno unositi čak i najmanje promjene u niti teme. Međutim, zbog toga je povijest prepuna tako malih obaveza da može biti u suprotnosti s pravilima projekta. To se može popraviti spajanjem više urezivanja u jedno veliko. Da biste to učinili, prvo pomoću naredbe pick odaberite prvo urezivanje, a zatim zgnječite za sljedeće. Git će primijeniti sve promjene u jednom urezivanju i zatražiti od vas da uredite poruku dijeljenog urezivanja.

Premještanje jednog urezivanja

Osim spajanja / premještanja svih urezivanja u grani teme, možda će vas zanimati samo određena predaja. Recimo da imate lokalnu podružnicu za nacrte u kojoj radite na nekoliko potencijalnih članaka, ali želite samo objaviti jedan od njih. Za to se može koristiti naredba git cherry-pick. Da bismo dobili određene urezivanja iz kojih želimo birati, možemo koristiti git log<основная ветка>..<тематическая> .

Imajte na umu da ovo stvara novo urezivanje koje samo ponavlja razliku odabranog predavanja (to jest, razliku između ovog urezivanja i prethodnog), ali ne i njegovo stanje.

Zaključak

Tako smo pokrili osnovne koncepte Gita. Ovaj članak možete koristiti kao brzu referencu ili možete pročitati knjigu "Pro Git", koja je mnogo duža (~ 450 stranica) i dublje pokriva Git.

Želite kopati dublje u Git, ali nemate dovoljno (ili obrnuto, puno) jedne velike knjige? Onda biste trebali pogledati naše.

Otpor promjenama osnovna je ljudska osobina. Ako nije bilo Gita kada ste započeli sa sistemima za kontrolu verzija, vrlo je vjerojatno da ste započeli sa Subverzijom. Često ljudi kažu da je Git previše kompliciran za početnike. Ipak, dozvolit ću sebi da se ne složim s vama.

U ovom članku ću vam pokazati kako možete koristiti Git za rad sa svojim projektima. Pretpostavimo da gradite projekt od nule i želite koristiti Git kao svoj sistem kontrole verzija. Nakon što smo se upoznali s osnovnim naredbama, pogledat ćemo kako možete učitati svoj kôd na GitHub.

Ovaj članak će pokriti osnove - kako pokrenuti projekt, kako upravljati novim i postojećim datotekama i kako pohraniti kôd u oblak. Preskočit ćemo neke škakljive stvari poput grananja jer je ovaj članak namijenjen početnicima.

Instaliranje Gita

Na službenoj web stranici Git je dostupan za različite sisteme - Linux, Mac, Windows. U našem slučaju koristit ćemo Ubuntu 13.04, a Git ćemo instalirati pomoću apt-get.

Sudo apt-get install git

Početna konfiguracija

Kreirajmo direktorij u kojem ćemo raditi. Git možete koristiti i za rad s postojećim projektom, u tom slučaju nećete stvoriti demo direktorij kako je dolje opisano.

Mkdir my_git_project cd my_git_project

Prvi korak je inicijalizacija Git spremišta u direktoriju projekta. To se može učiniti naredbom init, koja stvara .git direktorij sa svim podacima o vašem projektu.

Git config --global user.name "Shaumik" git config --global user.email " [zaštićena e -pošta]"git config --global color.ui" auto "

Vrijedi napomenuti da će, ako ne navedete svoju adresu i ime, umjesto toga biti korištene zadane vrijednosti. U našem slučaju, zadane vrijednosti su donny i [zaštićena e -pošta]

Također smo postavili boju sučelja na automatsko tako da će izlaz Git naredbi biti obojen. Tim naredbama dodajemo prefiks --global tako da se te vrijednosti koriste u cijelom sistemu i nema potrebe za postavljanjem za svaki pojedinačni projekt.

Priprema datoteka za urezivanje

U sljedećem koraku stvorit ćemo neke datoteke. Za to možete koristiti bilo koji uređivač teksta. Imajte na umu da ako inicijalizirate Git u postojećem projektu, ne morate učiniti ovaj korak.

Provjera statusa spremišta

Sada kada imate datoteke u svom projektu, pogledajmo kako ih Git rješava. Za provjeru trenutnog statusa spremišta, koristite naredbu git status

Dodavanje datoteka u Git

U ovom trenutku Git ne prati nijednu našu datoteku. Morate posebno dodati datoteke u Git da bi se to dogodilo. Da bismo to učinili, upotrijebit ćemo naredbu add.

Git add my_file

Nakon provjere statusa spremišta, vidimo da mu je jedna od datoteka već dodana.

Za dodavanje više datoteka upotrijebite sljedeće (imajte na umu da smo prvu datoteku dodali ranije, pa dodajemo samo preostale dvije).

Git dodaj myfile2 myfile3

Moguće je koristiti git add rekurzivno, ali budite oprezni s ovom naredbom. Postoje neke datoteke (na primjer, kompajlirani programi) koje ne treba dodavati u kontrolu verzija. Ako rekurzivno koristite git add, takve datoteke će također ići u spremište.

Izbrišite datoteke

Recimo da ste slučajno dodali datoteku u spremište koju niste trebali tamo dobiti. Ili želite ukloniti datoteku iz sistema za kontrolu verzija. Općenito, naredba git rm neće samo ukloniti datoteku iz spremišta, već će je i fizički ukloniti s diska. Da biste učinili da Git prestane pratiti datoteku, ali da je zadrži na disku, upotrijebite sljedeću naredbu:

Git rm -cached [naziv datoteke]

Prihvatite promjene

Nakon što dodate sve potrebne datoteke, možete ih predati (urezati) Gitu. Zamislite da je urezivanje snimak stanja projekta u određenoj fazi, na koje se možete vratiti u bilo kojem trenutku i vidjeti stanje projekta u tom trenutku. Poruka je pridružena svakom predavanju, što je specificirano argumentom iza prefiksa -m

Git commit -m "Moje prvo urezivanje"

Uključite poruku koja će sadržavati korisne informacije jer će vam pomoći da razumijete šta se tačno promijenilo u okviru ovog urezivanja. Izbjegavajte općenite poruke poput "Greške pravila". Ako imate alat za praćenje grešaka, možete navesti poruku poput „Ispravljena greška # 123“. Dobra je praksa uključiti naziv podružnice ili poboljšanja u objavu. Na primjer, „Upravljanje imovinom - dodana mogućnost generiranja PDF -a na temelju materijala“ - jasna i lako razumljiva poruka.

Git definira urezivanje s dugim heksadecimalnim brojem. Obično nema potrebe za kopiranjem cijelog retka, prvih 5-6 znakova dovoljno je za identifikaciju određenog urezivanja. Snimak ekrana pokazuje da je naše urezivanje identifikovano brojem 8dd76fc.

Dalje urezivanje

Promijenimo nekoliko datoteka nakon što ih urežemo. Nakon što smo ih promijenili, git status će prijaviti da smo promijenili datoteke.

Pomoću naredbe git diff možete vidjeti šta se promijenilo u ovim datotekama od zadnjeg urezivanja. Ako želite vidjeti promjene za određenu datoteku, možete koristiti git diff<файл> .

Potrebno je indeksirati promjene i izvršiti ih. Sve promijenjene datoteke projekta mogu se dodati urezivanju sa sljedećom naredbom:

Ovu naredbu možete izbjeći dodavanjem opcije -a u git commit. Ova naredba indeksira sve izmijenjene datoteke i urezuje ih. Ali ovaj pristup može biti prilično opasan, jer greškom možete počiniti ono što ne želite. Na primjer, recimo da ste otvorili datoteku i slučajno je promijenili. Prilikom indeksiranja promijenjenih datoteka bit ćete obaviješteni o promjenama u svakoj datoteci. Ali ako urežete sve promijenjene datoteke bez traženja pomoći. git commit -a, tada će sve datoteke biti urezane, uključujući i one koje niste htjeli urezivati.

Nakon što ste indeksirali datoteke, možete početi urezivati. Kao što je ranije spomenuto, poruku možete usmjeriti na urezivanje pomoću -m prekidača. Ali možete navesti i višeredničke komentare pomoću naredbe git commit koja otvara uređivač konzole za unos komentara.

Upravljanje projektima

Da biste vidjeli povijest projekta, možete koristiti sljedeću naredbu:

Prikazat će kompletnu povijest projekta u obliku popisa urezivanja i informacija o njima. Informacije urezivanja sadrže raspršenje urezivanja, autora, vrijeme i poruku urezivanja. Postoji mnogo vrsta naredbi git dnevnika s kojima ćete se morati upoznati kada koristite grananje u Gitu. Da biste vidjeli pojedinosti o određenom urezivanju i datoteke koje su se promijenile, pokrenite sljedeću naredbu:

Git show<хеш_коммита>

gdje<хеш_коммита>- heksadecimalni broj povezan s urezivanjem. As ovog priručnika namijenjene početnicima, nećemo pokrivati ​​kako vratiti stanje u vrijeme određenog urezivanja, niti kako upravljati granama.