Git

Giti õpetus algajatele

Giti õpetus algajatele

Tarkvaraarendus on ühistöö. Tarkvarainsenerina peate oma tööd teistega jagama. Kuid koodi jagamine ja koostöö võib muutuda keeruliseks. Tarkvara olelusringi jooksul toimuvate erinevate muutuste jälgimine on keeruline. Seega toetuvad arendusmeeskonnad tarkvarakoostöö protsessis abiks versioonihalduse tööriistadele. Git on tarkvaratööstuse üks silmapaistvamaid versioonihaldustööriistu.

Näpunäide: Selles õpetuses saate teada, kuidas kasutada Giti põhialuseid. Iga osa lõpeb mõne küsimusega. Enne jaotise lugema asumist saate küsimustega tutvuda. See aitab teil olulistest punktidest aru saada ja neile tähelepanu pöörata.

Nautige Giti õppimist!

Git: lühike ülevaade

Git on hajutatud versioonikontrollisüsteem. See jälgib kõiki teie failides ja kaustades tehtud muudatusi. See hõlbustab pooleliolevate tööde salvestamist. Probleemi ilmnemisel saate hõlpsalt kontrollida faili või kausta varasemat versiooni. Vajadusel saate isegi kogu koodibaasi vanema versiooni taastada.

Giti arendamine algas 2005. aastal. Linuxi tuumarühm kasutas oma koodi ülalpidamiseks BitKeeperis, varalises hajutatud versiooni juhtimissüsteemis. Kuid BitKeeper loobus toote tasuta kasutamisest. Nii kavandas Linuxi looja ja peamine arendaja Linus Torvalds uue avatud lähtekoodiga hajutatud versiooni juhtimissüsteemi, mis vastaks Linuxi arenduskogukonna nõuetele. Ja Git sündis.

Hajutatud versioonikontrollisüsteemina ei nõua Git koodi jälgimiseks tsentraliseeritud asutust. Vanemate tsentraliseeritud versioonide juhtelemendid, nagu CVS, SVN või Perforce, nõuavad muudatuste ajaloo säilitamiseks keskservereid. Git saab jälgida kõiki muudatusi kohapeal ja töötada peer-to-peer. Nii et see on mitmekülgsem kui tsentraliseeritud süsteemid.

Küsimused:

Giti installimine

Linuxi süsteemide jaoks on Giti installimine lihtne. Kui kasutate Debiani-põhist levitamist nagu Ubuntu, võite kasutada apt installi:

$ sudo apt install git-all

Fedora, RHEL või CentOS puhul saate kasutada järgmist

$ sudo dnf installige git-all

Kas Git on installitud, saate kontrollida järgmist käsku:

$ git --versioon

See peaks näitama installitud Giti versiooni, näiteks:

git versioon 2.17.0

Kui olete Giti installinud, on aeg seadistada oma kasutajanimi ja e-posti aadress:

$ git config - globaalne kasutaja.nimi "oma kasutajanimi"
$ git config - globaalne kasutaja.e-kiri „[email protected]”

Järgmise käsu abil saate kontrollida, kas konfiguratsioonid on õigesti seadistatud:

$ git config - list
kasutaja.nimi = teie kasutajanimi
kasutaja.email = teie kasutajanimi @ näide.com

Näpunäide: Oluline on määrata kasutaja.nimi ja kasutaja.meili, kuna neid konfiguratsioone kasutatakse teie muudatuste jälgimiseks.

Küsimused

Gitist kontseptuaalselt aru saamine

Giti kasutamiseks peate kõigepealt mõistma neid nelja mõistet:

Töökataloog, lavastusala ja hoidla on teie masina jaoks kohalikud. Kaughoidla võib olla mis tahes muu arvuti või server. Mõelgem nendele mõistetele kui neljale kastile, kuhu mahuvad standardsed A1 paberid.

Oletame, et kirjutate dokumendi käsitsi oma laual A1 paberile. Te hoiate seda dokumenti töökataloogi kastis. Oma töö teatud etapis otsustate, et olete valmis hoidma juba tehtud töö koopiat. Nii et teete oma praegusest paberist koopia ja panete selle lavakasti.

Lavakast on ajutine ala. Kui otsustate fotokoopia lavakastis ära visata ja värskendada seda töökataloogi dokumendi uue koopiaga, siis selle etapidokumendi kohta püsivat kirjet ei ole.

Oletame, et olete üsna kindel, et soovite lavakastis oleva dokumendi püsivat arvestust säilitada. Seejärel teete lavakasti dokumendist koopia ja teisaldate selle hoidla kasti.

Kui teisaldate selle hoidla kasti, juhtub kaks asja:

  1. Dokumendi hetktõmmis salvestatakse jäädavalt.
  2. Hetkepildi juurde tehakse logifaili kirje.

Logikirje aitab teil selle dokumendi hetktõmmise üles leida, kui seda tulevikus vajate.

Nüüd on kohaliku hoidla kastis teil oma töö hetkepilt ja logikirje. Kuid see on saadaval ainult teile. Nii et teete koos logifailiga oma kohaliku hoidla dokumendi koopia ja panete selle ettevõtte varustustoa kasti. Nüüd võivad kõik teie ettevõttes tulla ja teha teie dokumendist koopia ning viia selle oma töölauale. Varustusruumi kast oleks kaughoidla.

Kaughoidla on selline, nagu jagaksite oma dokumenti Google Docsi või Dropboxi abil.

Küsimused:

Teie esimene Giti hoidla

Kui olete Giti installinud, saate hakata looma oma Giti hoidlaid. Selles jaotises lähtestate oma Giti hoidla.

Oletame, et töötate veebiarendusprojekti kallal. Loome kausta nimega project_helloworld ja vahetame kataloogi:

$ mkdir project_helloworld
$ cd project_helloworld

Võite öelda, et Git jälgib seda kataloogi järgmise käsuga:

$ git init

Peaksite nägema sellist väljundit:

Initsialiseeritud tühi Giti hoidla kataloogis / Kasutajad / zakh / _work / LearnGIT / git_tutorial /
project_helloworld /.git

Nüüd jälgib Git kõiki faile ja kaustu projekti_helloworld sees.

Küsimused:

Põhilised Git-käsud: olek, logimine, lisamine ja sidumine

Olekukäsk näitab teie töökataloogi praegust seisukorda ja logikäsk näitab ajalugu. Proovime olekukäsu:

$ git staatus
Filiaali kaptenil
Esialgne pühendumine
pole midagi siduda (failide loomine / kopeerimine ja jälgimiseks kasutage "git add")

Git status käsu väljundis öeldakse, et olete põhiharul. See on vaikeharu, mille Git initsialiseerib. (Saate luua oma filiaale. Filiaalide kohta lisateave hiljem). Samuti öeldakse väljundis, et pole midagi teha.

Proovime logi käsku:

$ git logi
saatuslik: teie praegusel harul 'kapten' ei ole veel ühtegi toimingut

Niisiis, on aeg luua kood. Loome faili nimega register.HTML:


Minu veebileht


Tere, Maailm

Faili loomiseks saate kasutada tekstiredaktorit. Kui olete faili salvestanud, kontrollige olekut uuesti:

$ git staatus
Filiaali kaptenil
Esialgne pühendumine
Jälgimata failid:
(kasutage "git add … "Lisada kohustuste hulka)
indeks.HTML
sidumiseks pole midagi lisatud, kuid jälitamata failid olemas (jälgimiseks kasutage "git add")

Git ütleb teile, et teil on fail nimega register.html teie töökataloogis, millele pole tähelepanu pööratud.

Kontrollime kindlasti indeksit.html on jälgitav. Peate kasutama käsku add:

$ git lisa indeks.HTML

Teise võimalusena võite kasutada."Võimalus lisada kõik kataloogi:

$ git add .

Nüüd kontrollime olekut uuesti:

$ git staatus
Filiaali kaptenil
Esialgne pühendumine
Tehtavad muudatused:
(kasutage "git rm - vahemälu ... "lavalaudadele)
uus fail: register.HTML

Roheline näitab, et indeks.HTML-faili jälgib Git.

Näpunäide: Nagu ülaltoodud juhistes mainitud, kui kasutate käsku:

$ git rm - vahemälu indeks.HTML

Teie register.HTML läheb tagasi jälgimata olekusse. Etenduse juurde naasmiseks peate selle uuesti lisama.]

Kontrollime logi uuesti:

$ git logi
saatuslik: teie praegusel harul 'kapten' ei ole veel ühtegi toimingut

Ehkki Git jälgib indeksit.html, faili kohta pole Giti hoidlas veel midagi. Teeme oma muudatused:

$ git pühendama -m "Indeks.html "
Väljund peaks välja nägema umbes selline:
[master (root-toime) f136d22] Indeksi täitmine.HTML
1 fail muudetud, 6 sisestust (+)
loo režiimi 100644 register.HTML

Jutumärkide sees pärast tähte „-m” on kommentaar, mis läheb logifaili. Võite kasutada git committ ilma “-m”, kuid siis avab Git tekstiredaktori, milles palutakse teil kommentaarid kirjutada. Lihtsam on lihtsalt kommentaarid otse käsureale panna.

Nüüd kontrollime meie logifaili:

$ git logi
toime panema f136d22040ba81686c9522f4ff94961a68751af7
Autor: Zak H
Kuupäev: esmaspäev 4 juuni 16:53:42 2018 -0700
Indeksi täitmine.HTML

Näete, et see näitab pühendumist. Olete edukalt oma muudatused oma kohalikus hoidlas teinud. Kui soovite sama logi näha lühidalt, võite kasutada järgmist käsku:

$ git log - oneline
f136d22 Indeksi täitmine.HTML

Edasi liikudes kasutame seda logikäskluse vormi, sest see hõlbustab toimuva mõistmist.

Alustame indeksi muutmist.HTML. Avage register.HTML-fail redaktoris ja muutke rea "Tere maailm" väärtuseks "Tere maailm! See olen mina!”Ja salvestage see. Oleku uuesti kontrollimisel näete, et Git on märganud, et muudate faili:

$ git staatus
Filiaali kaptenil
Muudatused, mis ei ole toime pandud:
(kasutage "git add ... ", et ajakohastada kohustusi)
(kasutage "git checkout -- … ", Et loobuda muudatustest töökataloogis)
muudetud: indeks.HTML
sidumiseks pole muudatusi lisatud (kasutage "git add" ja / või "git toime -a")

Muudatus on endiselt teie töökataloogis. Peate selle suruma lavapiirkonda. Kasutage enne kasutatud käsku add:

$ git add .

Kontrollige olekut uuesti:

$ git staatus
Filiaali kaptenil
Tehtavad muudatused:
(kasutage "git reset HEAD ... "lavalaudadele)
muudetud: indeks.HTML

Nüüd on teie muudatused lavastuspiirkonnas. Saate selle anda hoidlasse püsivaks säilitamiseks:

$ git pühendama -m "Muudetud indeks.HTML rõõmsamale sõnumile "
[master 0586662] Muudetud register.HTML õnnelikuma sõnumini
1 fail muudetud, 1 sisestus (+), 1 kustutatud (-)

Püsivate muudatuste logist saate kontrollida:

$ git log - oneline
0586662 Muudetud indeks.HTML õnnelikuma sõnumi juurde
f136d22 Indeksi täitmine.HTML

Selles jaotises olete õppinud Gitis oma dokumentide jälgimiseks kasutama olekut, logima, lisama ja käske täitma.

Küsimused:

  • Mida teeb git staatus?
  • Mida git log teeb?
  • Mida teeb git add?
  • Mida git toime paneb?

Checkouti abil vanemate failide juurde naasmine

Kui teete Gitis faili, loob see iga pühenduse jaoks unikaalse räsi. Vanemasse versiooni naasmiseks võite neid kasutada identifikaatoritena.

Oletame, et soovite tagasi minna oma varasemale indeksiversioonile.HTML. Kõigepealt vaatame indeksit.HTML praeguses olekus:

$ kassiindeks.HTML

Minu veebileht


Tere, Maailm! See olen mina!

Näete, et teil on uuem versioon („Tere maailm! See olen mina!”). Kontrollime logi:

$ git log - oneline
0586662 Muudetud indeks.HTML õnnelikuma sõnumi juurde
f136d22 Indeksi täitmine.HTML

Eelmise versiooni räsi oli f136d22 (“Hello world”).  Selle versiooni saamiseks võite kasutada käsku kassas:

$ git kassas f136d22
Märkus: "f136d22" vaatamine.
Olete seisundis „irdunud pea”. Võite vaadata ringi, teha eksperimentaalseid muudatusi
ja neid täita ning võite kõik selles olekus tehtud kohustused kõrvale heita
ilma et see mõjutaks ühtegi haru teise kassaga.
Kui soovite oma loodud kohustuste säilitamiseks luua uue haru, võite seda teha
tehke seda (nüüd või hiljem), kasutades uuesti kassaga -b koos kassaga. Näide:
git kassasse -b
HEAD on nüüd f136d22 ... Indeksi täitmine.HTML

Kui vaadata indeksi sisu.HTML, näete:

$ kassiindeks.HTML

Minu veebileht


Tere, Maailm

Sellel on ainult “Tere maailm”. Nii et teie indeks.HTML on muutunud vanemaks versiooniks. Oleku kontrollimisel tehke järgmist

$ git staatus
PÕHJUS eraldatud f136d22 juures
pole midagi siduda, töökataloog on puhas

Git ütleb teile põhimõtteliselt, et HEAD pole kõige uuem kohustus. Võite minna tagasi kõige värskema kohustuse juurde, kontrollides järgmise haru abil peaharu:

kassas $ git master
Eelmine HEAD-i positsioon oli f136d22 ... Indeksi täitmine.HTML
Üleminek harule 'master'

Nüüd, kui kontrollite olekut:

$ git staatus
Filiaali kaptenil
pole midagi siduda, töökataloog on puhas

Punane hoiatus on kadunud. Samuti, kui kontrollite oma indeksit.HTML, peaksite olema tagasi uusima versiooni juurde:

$ kassiindeks.HTML

Minu veebileht

Tere, Maailm! See olen mina!

Kassa käsk viib teid erinevatesse olekutesse. Lisateavet kassast leiate järgmises jaotises.

Küsimused:

  • Kuidas kasutada faili vanema versiooni avamiseks käsku git checkout?
  • Kuidas kasutate faili uusima versiooni juurde naasmiseks git checkouti?

Kassa, hargnemine ja ühendamine

Hargnemine on üks Giti parimatest omadustest. See aitab teil oma töid lahutada ja rohkem katsetada. Teistes versioonide juhtimissüsteemides oli hargnemine aeganõudev ja keeruline. Git muutis hargnemise ja ühendamise lihtsamaks.

Nagu olekukäsus märkasite, olete uue Giti hoidla loomisel peamises harus.

$ git staatus
Filiaali kaptenil
pole midagi siduda, töökataloog on puhas

Oletame, et teete oma sõbrale Davidile veebisaiti. Soovite oma veebisaidi koodi uuesti kasutada. Hargnemine on suurepärane lahendus. Helistame filiaalile david_website.

Võite anda järgmise käsu:

$ git filiaal david_website

Kõigi harude nägemiseks võite kasutada järgmist käsku:

$ git filiaal - loend
david_website
* meister

Täht (*) meistri kõrval tähendab, et olete endiselt põhiharus. David_website haru saate vaadata järgmise käsuga:

$ git checkout david_website
Üleminek harule 'david_website'

Kui nüüd uuesti filiaalide loendit kontrollite, näete:

$ git filiaal - loend
* david_website
meister

Nii et olete saidil david_website.

Muudame indeksit.html lehelt “Tere maailm! See olen mina!”Kuni“ Tere maailm! See on David!”Ja siis lava ja pühendu:

$ git add .
$ git sitout -m "Taaveti muudetud veebisait"

Kui kontrollite logisid, peaksite nägema järgmist:

$ git log - oneline
345c0f4 Taaveti veebisait muudetud
0586662 Muudetud indeks.HTML õnnelikuma sõnumi juurde
f136d22 Indeksi täitmine.HTML

Ja teie indeksfail peaks välja nägema selline:

$ kassiindeks.HTML

Minu veebileht


Tere, Maailm! See on David!

Vaatame nüüd uuesti peaharu:

kassas $ git master
Üleminek harule 'master'

Kui kontrollite olekut ja logite:

$ git staatus
Filiaali kaptenil
pole midagi siduda, töökataloog on puhas
$ git log - oneline
0586662 Muudetud indeks.HTML õnnelikuma sõnumi juurde
f136d22 Indeksi täitmine.HTML

Pange tähele, et teil pole meistris kolmandat kohustust. Kuna seda pühendumist hoitakse ainult harus david_website.

Nii juhtus

Oletame, et selles etapis otsustate, et te ei soovi oma veebisaiti jätkata. Sa oled lihtsalt Davidi arendaja. Nii et soovite david_website haru muudatused liita masteriga. Peaharust peate lihtsalt väljastama järgmised käsud (olekukäsu abil kontrollitakse, kas olete õiges kohas):

$ git staatus
Filiaali kaptenil
pole midagi siduda, töökataloog on puhas
 
$ git ühenda david_website
0586662… 345c0f4 värskendamine
Kiiresti edasi
indeks.HTML | 2 +-
1 fail muudetud, 1 sisestus (+), 1 kustutatud (-)

Näpunäide: Tõmbate muudatused saidilt david_website masteriks. Selle saavutamiseks peate olema kapteni peal.

Nüüd, kui kontrollite pealiku logi, näete, et kolmas kohustus on olemas:

$ git log - oneline
345c0f4 Taaveti veebisait muudetud
0586662 Muudetud indeks.HTML õnnelikuma sõnumi juurde
f136d22 Indeksi täitmine.HTML

Olete edukalt ühendanud david_website haru masteriks. Ja teie indeks.HTML haru haru jaoks on identne david_website haruga:

$ kassiindeks.HTML

Minu veebileht


Tere, Maailm! See on David!

Saate hoida david_website haru:

$ git filiaal - loend
david_website
* meister

Või võite selle kustutada:

$ git filiaal -d david_website
Kustutatud haru david_website (oli 345c0f4).

Pärast kustutamist ei tohiks te enam david_website haru näha:

$ git filiaal - loend
* meister

Näpunäide: Kui Git ei saa ühendamise ajal automaatselt liituda, annab see teile konfliktivead. Sellisel juhul peate ühendamisprobleemid käsitsi lahendama.

Küsimused:

  • Miks on vaja hargnemist?
  • Kuidas hargneda ja ühendada faile ja kaustu?

Kaughoidla

Siiani on kogu teie töö olnud kohalik. Teete oma muudatused kohalikus hoidlas. Kuid on aeg oma tööd maailmaga jagada.

Giti kaughoidla on põhimõtteliselt teie kohaliku hoidla teine ​​eksemplar, millele pääsevad juurde teised. Saate seadistada serveri ja teha sellest kaughoidla. Kuid enamik inimesi kasutab selleks GitHubi või Bitbucketit. Seal saate tasuta luua avalikke hoidlaid, kuhu pääsevad juurde kõik.

Loome GitHubis kaughoidla.

Esiteks peate looma GitHubi konto []. Kui olete konto saanud, looge uus hoidla, kasutades nuppu „Uus hoidla”. Kasutage hoidla nimena projekti_veebisait (soovi korral saate valida midagi muud).

Peaksite nägema vahekaarti Kood, millel on sellised juhised:

... või looge käsureal uus hoidla

kaja "# projekti_veebisait" >> LOE.md
git init
git add README.md
git pühenduma -m "esimene kohustus"
git remote lisage alguspunkt git @ github.com: teie kasutajanimi / projekti_veebisait.git
git push -u päritolumeister

Kopeerige järgmine käsk git remote add origin ja käivitage see oma töökataloogis:

$ git remote lisage alguspunkt git @ github.com: teie kasutajanimi / projekti_veebisait.git

Märkus. Teie puhul peaks teie kasutajanimi olema see, mida kasutasite oma GitHubi konto loomiseks.

Ülalolevas käsus juhendasite Git kaughoidla asukohta. Käsk ütleb Gitile, et teie projekti_helloworld töökataloogi alguspunkt on „[email protected]: teie kasutajanimi / project_website.git ”.

Nüüd lükake kood oma peaharust päritoluni (kaughoidla):

$ git push päritolumeister
Objektide loendamine: 9, tehtud.
Delta tihendamine kuni 4 niidi abil.
Objektide tihendamine: 100% (6/6), valmis.
Objektide kirjutamine: 100% (9/9), 803 baiti | 0 baiti / s, valmis.
Kokku 9 (delta 2), taaskasutatud 0 (delta 0)
kaugjuhtimispult: deltade lahendamine: 100% (2/2), valmis.
Et git @ github.com: teie kasutajanimi / projekti_veebisait.git
* [uus haru] meister -> meister

Kui värskendate oma brauserit GitHubis, peaksite nägema seda indeksit.HTML-fail on üleval. Nii et teie kood on avalik ja teised arendajad saavad kaughoidlas koodi vaadata ja seda muuta.

Arendajana töötate teiste inimeste koodidega. Seega tasub proovida GitHubi kassakoodi.

Läheme uude kataloogi, kus teil pole midagi. GitHubi hoidla paremas servas märkate nuppu „Kloonige või laadige alla”. Kui klõpsate sellel, peaks see andma teile SSH-aadressi. Käivitage järgmine käsk koos SSH-aadressiga:

$ git kloon git @ github.com: teie kasutajanimi / projekti_veebisait.git

Väljund peaks välja nägema selline:

$ git kloon git @ github.com: teie kasutajanimi / projekti_veebisait.git
Kloonimine saidile „project_website” ..
kaugjuhtimine: Objektide loendamine: 9, tehtud.
kaugjuhtimine: Objektide tihendamine: 100% (4/4), valmis.
kaugjuhtimispult: kokku 9 (delta 2), taaskasutatud 9 (delta 2), pakendis taaskasutatud 0
Objektide vastuvõtmine: 100% (9/9), tehtud.
Delta lahutamine: 100% (2/2), valmis.
Ühenduse kontrollimine ... valmis.

See loob teie puhtasse kausta projekti_sait. Kui te lähete sisse, peaksite nägema indeksit.HTML teie projekti_kaaslaste maailmast.

Nii et olete saavutanud järgmise:

  • Lõi ja tegi muudatusi projektis_helloworld
  • Laadis koodi üles GitHubi saidil project_website
  • Laadis koodi alla GitHubist

Vaatame uue faili uuest töökataloogist project_website:

$ puudutage ReadMe.md
$ git add .
$ git pühendama -m "Lisatud ReadMe.md "
$ git push päritolumeister

Kui värskendate lehte GitHub project_website, peaksite nägema ReadMe.md fail seal.

Märkus. Kui laadite koodi alla GitHubist, teab töökataloog automaatselt päritolu. Te ei pea seda määrama käsuga “git remote add origin”.

Küsimused:

  • Miks peate kasutama kaughoidlaid?
  • Kuidas seadistada oma praegune kohalik hoidla kaughoidlaga ühenduse loomiseks?
  • Kuidas kloonite kaughoidlaid oma kohalikku arvutisse?

Järeldus

Kõigi käskude kohta leiate lisateavet Giti dokumentidest []. Kuigi Giti kasutajaliidese tööriistu on saadaval, on Git valdamiseks parim viis käsurida. See annab teile tugevama aluse teie arendustööks.

Edasine uuring:
  • https: // git-scm.com / docs
  • https: // git-scm.com / book / en / v2
  • https: // git-scm.com / videod
OpenTTD õpetus
OpenTTD on seal üks populaarsemaid ärisimulatsioonimänge. Selles mängus peate looma suurepärase transpordiettevõtte. Alustate siiski alguses umbes 190...
SuperTuxKart Linuxile
SuperTuxKart on suurepärane pealkiri, mis on loodud selleks, et tuua teie Linuxi süsteemis tasuta Mario Karti kogemus. See on päris keeruline ja lõbus...
Lahing Wesnothi õpetuse eest
Battle for Wesnoth on üks populaarsemaid avatud lähtekoodiga strateegiamänge, mida saate praegu mängida. See mäng pole mitte ainult olnud väga pikka a...