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:
- Miks peaksite Gitit kasutama?
- Mis kasu on hajutatud versioonihaldusest?
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-allFedora, RHEL või CentOS puhul saate kasutada järgmist
$ sudo dnf installige git-allKas Git on installitud, saate kontrollida järgmist käsku:
$ git --versioonSee peaks näitama installitud Giti versiooni, näiteks:
git versioon 2.17.0Kui 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 - listkasutaja.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
- Mis on käsk Giti installimiseks teie Linuxi süsteemi?
- Miks peaksite kasutaja seadistama.nimi ja kasutaja.e-posti konfiguratsioon? Kuidas neid üles seada?
Gitist kontseptuaalselt aru saamine
Giti kasutamiseks peate kõigepealt mõistma neid nelja mõistet:
- Töökataloog
- Lavastusala
- Hoidla
- Kaughoidla
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:
- Dokumendi hetktõmmis salvestatakse jäädavalt.
- 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:
- Kas saate määratleda töökataloogi, etapiviisi, hoidlat ja kaughoidlat?
- Kas saate joonistada, kuidas dokumendid ühest etapist teise liiguvad?
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 initPeaksite 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:
- Kuidas lähtestada kataloog, mida Git jälgib?
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 staatusFiliaali 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 logisaatuslik: teie praegusel harul 'kapten' ei ole veel ühtegi toimingut
Niisiis, on aeg luua kood. Loome faili nimega register.HTML:
Tere, Maailm
Faili loomiseks saate kasutada tekstiredaktorit. Kui olete faili salvestanud, kontrollige olekut uuesti:
$ git staatusFiliaali kaptenil
Esialgne pühendumine
Jälgimata failid:
(kasutage "git add
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.HTMLTeise võimalusena võite kasutada."Võimalus lisada kõik kataloogi:
$ git add .Nüüd kontrollime olekut uuesti:
$ git staatusFiliaali kaptenil
Esialgne pühendumine
Tehtavad muudatused:
(kasutage "git rm - vahemälu
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.HTMLTeie register.HTML läheb tagasi jälgimata olekusse. Etenduse juurde naasmiseks peate selle uuesti lisama.]
Kontrollime logi uuesti:
$ git logisaatuslik: 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 logitoime 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 - onelinef136d22 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 staatusFiliaali kaptenil
Muudatused, mis ei ole toime pandud:
(kasutage "git add
(kasutage "git checkout --
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 staatusFiliaali kaptenil
Tehtavad muudatused:
(kasutage "git reset HEAD
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 - oneline0586662 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.HTMLTere, Maailm! See olen mina!
Näete, et teil on uuem versioon („Tere maailm! See olen mina!”). Kontrollime logi:
$ git log - oneline0586662 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 f136d22Mä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.HTMLTere, Maailm
Sellel on ainult “Tere maailm”. Nii et teie indeks.HTML on muutunud vanemaks versiooniks. Oleku kontrollimisel tehke järgmist
$ git staatusPÕ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 masterEelmine HEAD-i positsioon oli f136d22 ... Indeksi täitmine.HTML
Üleminek harule 'master'
Nüüd, kui kontrollite olekut:
$ git staatusFiliaali 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.HTMLTere, 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 staatusFiliaali 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_websiteKõigi harude nägemiseks võite kasutada järgmist käsku:
$ git filiaal - loenddavid_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 - oneline345c0f4 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.HTMLTere, Maailm! See on David!
Vaatame nüüd uuesti peaharu:
kassas $ git masterÜleminek harule 'master'
Kui kontrollite olekut ja logite:
$ git staatusFiliaali 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 staatusFiliaali 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 - oneline345c0f4 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.HTMLTere, Maailm! See on David!
Saate hoida david_website haru:
$ git filiaal - loenddavid_website
* meister
Või võite selle kustutada:
$ git filiaal -d david_websiteKustutatud 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.mdgit 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.gitMä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äritolumeisterObjektide 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.gitVäljund peaks välja nägema selline:
$ git kloon git @ github.com: teie kasutajanimi / projekti_veebisait.gitKloonimine 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