Begynnelsen Git og Github for Linux Users


Git distribuert revisjonskontrollsystem er en søt steg opp fra Subversion, CVS, Mercurial, og alle de andre vi har prøvd og gjort gjøre med. Det er flott for distribuert utvikling, når du har flere bidragsytere som jobber på samme prosjekt, og det er utmerket for trygt å prøve ut alle slags sprø endringer. Vi kommer til å bruke en gratis Github konto for praksis, slik at vi kan hoppe rett inn og begynne å gjøre ting.

Konseptuelt Git er forskjellig fra andre revisjon kontrollsystemer. Eldre RCS spores endringer i filer, som du kan se når du rote rundt i sine konfigurasjonsfiler. Git tilnærming er mer som filsystem snapshots, hvor hver begå eller lagret tilstand er et komplett bilde i stedet for en fil full av differ. Git er plassbesparende fordi den lagrer bare endringer i hvert stillbilde og koblinger til uendrede filer. Alle endringer er checksummed, så er du sikret av dataintegritet, og alltid være i stand til å reversere endringene.

Git er veldig fort, fordi arbeidet er gjort på din lokale PC og deretter presset til en ekstern depotet. Dette gjør alt du gjør helt trygt, fordi ingenting påvirker fjern repo før du skyver endringer i den. Og selv da har du ett flere Failsafe: grener. Git er forgrening systemet er genialt. Lag en gren fra master gren, utføre alle slags forferdelige eksperimenter, og deretter atomvåpen det eller skyve den oppstrøms. Når det er oppstrøms andre bidragsytere kan arbeide på den, eller du kan opprette forespørsel et trekk for å ha det anmeldt, og deretter etter at den passerer mønstre flette det inn i hovedgren.

Så hva hvis, etter alt dette forsiktighet, det fortsatt blåser opp master gren? Ingen grunn til bekymring, fordi du kan gå tilbake flettingen.

Øv på Github

Den raskeste måten å få noen gode hands-on Git praksis er ved å åpne en gratis Github konto. Figur 1 viser min Github teststed, heter lekeplass
. Nye GitHub kontoer kommer med et ferdighus repo befolket av en readme-filen, lisens, og knapper for rask opprettelse av feilrapporter, trekker forespørsler, wikier, og andre nyttige funksjoner.

Gratis GitHub kontoer bare tillate offentlige arkiver. Dette gjør at alle kan se og laste ned filene. Men ingen kan gjøre inger med mindre de har en Github konto og du har godkjent dem som samarbeidspartner. Hvis du ønsker en privat repo skjult for verden du trenger en betalt medlemskap. Syv dollar i måneden får du fem private repos, og ubegrenset offentlige repos med ubegrenset bidragsytere.

Github gir vennlig kopi-og-lim-nettadresser for kloning repositories. Så du kan opprette en mappe på datamaskinen for depotet, og deretter klone inn det:

 $ mkdir git-repos $ cd git-repos $ git clone https://github.com/AlracWebmaven/playground. gitCloning til "lekeplass" ... fjern: Telle objekter: 4, done.remote: Komprimering av objekter: 100% (4/4), done.remote: Total 4 (delta 0), gjenbrukt 0 (delta 0) Pakke objekter: 100% (4/4), done.Checking tilkobling ... gjort. $ ls lekeplass /LISENS README.md 

Alle filene er kopiert til datamaskinen, og du kan lese, redigere og slette dem akkurat som en hvilken som helst annen fil. La oss forbedre README.md og lære hvor vidunderlig Git forgrening.

Forgrening

Git grenene er herlig utmerket for trygt å lage og teste endringer. Du kan opprette og ødelegge dem alle du vil. La oss gjøre en for redigering README.md:

 $ cd lekeplass $ git checkout -B testSwitched til en ny gren 'test' 

Kjør git status for å se hvor du er:

 $ git statusOn gren testnothing å begå, arbeidsmappen ren 

Hva grener har du laget?

 $ git branch * test mester 

Stjernen indikerer hvilken gren du er på. master er din viktigste grenen, den du aldri vil gjøre noen endringer før de har blitt testet i en gren. Nå gjøre noen endringer i README.md, og deretter sjekke status på nytt:

 $ git statusOn avdelings testChanges ikke iscenesatt for innsending: (bruk "git legge ..." for å oppdatere hva som vil være forpliktet) (bruk "git checkout - ..." for å forkaste endringer i arbeidsmappen) endret: README.mdno endringer legges forplikte (bruk "git legge til" og /eller "git commit a") 

Er ikke det flott, Git forteller deg hva som skjer, og gir hint. For å forkaste endringene, kjører

 $ git checkout README.md 

Eller du kan slette hele grenen:

 $ git checkout mester $ git branch -D test 

Eller du kan ha Git spore filen:

 $ git add README.md $ git statusOn avdelings testChanges å være forpliktet: (bruk "git reset HEAD ..." for å unstage) endret: README.md 

På dette stadiet Git sporer README.md, og det er tilgjengelig for alle dine grener. Git gir deg en nyttig hint-- hvis du ombestemmer deg og ikke vil Git å spore denne filen, reset kjøre git HEAD README.md. Dette, og alt Git aktivitet, spores i .git katalog i depotet. Alt er i rene tekstfiler: filer, sjekksummer, som brukeren gjorde hva, ekstern og lokal repos-- alt

Hva hvis du har flere filer å legge til.? Du kan liste opp hver enkelt, for eksempel git legge fil1 file2 file2, eller legge alle filer med git legge *.

Når det er slettet filer, kan du bruke git rm filnavn, som bare un-etapper dem fra Git og ikke slette dem fra systemet. Hvis du har mye av slettede filer, bruk git legge -u.

Begår filer

Nå skal forplikte vår endret fil. Dette legger det til vår gren, og det er ikke lenger tilgjengelig for andre grener:

 $ git commit README.md [test 5badf67] endringer i readme en fil endres, en innsetting (+) 

Du vil bli bedt om å levere en forplikte melding. Det er en god regel å la dine meldingene detaljert og spesifikk, men for nå er vi ikke kommer til å være for masete. Nå redigerte filen har vært forpliktet til grenen test. Det har ikke blitt slått sammen med master eller skyves oppstrøms; det er bare å sitte der. Dette er en god stoppe poeng hvis du trenger å gjøre noe annet.

Hva hvis du har flere filer til å begå? Du kan begå bestemte filer, eller alle tilgjengelige filer:

 $ git commit fil1 file2 $ git commit -a 

Hvordan vet du som forplikter ennå ikke er presset oppstrøms, men er fortsatt sitter i grenene? git status vil ikke fortelle deg, så bruk denne kommandoen:

 $ git logge --branches --ikke --remotescommit 5badf677c55d0c53ca13d9753344a2a71de03199Author: Carla Schroder Dato: Thu Nov 20 10:19:38 2014 -0800 endringer readme 

Dette viser un-fusjonert inger, og når den returnerer ingenting da alle inger har blitt skjøvet oppstrøms. Nå la oss presse dette forplikte oppstrøms:

 $ git push-opprinnelse testCounting objekter: 7, done.Delta komprimering med opptil 8 threads.Compressing objekter: 100% (3/3), done.Writing objekter: 100% (3/3), 324 bytes | 0 bytes /s, done.Total 3 (delta 1), gjenbrukt 0 (delta 0) Til https://github.com/AlracWebmaven/playground.git * [ny gren] test - > test 

Du kan bli spurt om dine GitHub påloggingsdetaljene. Git bufrer dem i 15 minutter, og du kan endre dette. Dette eksemplet setter cache på to timer:

 $ git config --global credential.helper 'cache --timeout = 7200' 

Nå gå til Github og se på den nye grenen. . Github viser alle dine grener, og du kan forhåndsvise filene dine i de ulike grenene (figur 2)


Nå kan du lage en pull forespørsel ved å klikke på Sammenligne & Trekk Request knappen. Dette gir deg en sjanse til å vurdere endringene før sammenslåing med master. Du kan også generere pull forespørsler fra kommandolinjen på datamaskinen, men det er heller en tungvint prosess, til det punktet at du kan finne alle typer verktøy for lettelser i prosessen på nettet. Så, for nå vil vi bruke de fine clicky GitHub knapper.

Github lar deg vise filer i ren tekst, og den støtter også mange kodespråk, slik at du kan se en generert forhåndsvisning. På dette punktet kan du presse flere endringer i samme gren. Du kan også gjøre endringer direkte på Github, men når du gjør dette vil du få konflikter mellom den elektroniske versjonen og din lokale versjon. Når du er fornøyd med endringene, klikker Merge pull forespørsel knappen. Du må klikke to ganger. Github undersøker automatisk trekke forespørsel om å se om det kan bli slått sammen renslig, og hvis det er konflikter må du fikse dem.

En annen fin github funksjon er når du har flere grener, kan du velge hvilken å flette inn ved å klikke på Rediger-knappen på høyre side av grenene listen (figur 3).


Etter at du har fusjonert, klikker du på Slett Branch knappen for å holde alt ryddig. Så på den lokale datamaskinen, slette grenen ved først å trekke endringene i master, og så kan du slette din gren uten Git klage:

 $ git checkout mester $ git pull opprinnelse mester $ git branch -d test < p> Du kan tvinge-slette en gren med en stor -D: 
 $ git branch -D test 
tilbakestilling av endringer

Igjen er enklest den Github spisse-clicky måte. Den viser deg en liste over alle endringer, og du kan gå tilbake noen av dem ved å klikke på riktig knapp. Du kan også gjenopprette slettede grener.

Du kan også gjøre alle disse oppgavene utelukkende fra kommandolinjen, som er et stort tema for en annen dag fordi det er komplisert. For en uttømmende Git tutorial prøv gratis Git boken. Anmeldelser