Git Version Control på kommandolinjen for iOS Devs

Det har skjedd for oss alle: Vi endrer noe i vår kode, og plutselig ser alt ut til å være "ødelagt". Dette er når versjonskontroll er en velsignelse - hvis du vet hvordan du bruker den. I denne opplæringen lærer vi hvordan du bruker Git fra kommandolinjen.

Xcode og andre moderne IDEer har grunnleggende alternativer for Git innebygd i deres grafiske brukergrensesnitt, men du får bare høyt nivå kontroll av repo (Git repository) via kommandolinjen. Hvis du gjør avansert koding eller Git-ledelse, er det viktig å være komfortabel med kommandolinjen. Hvis du aldri har brukt kommandolinjen før, kan du kanskje sjekke ut min andre veiledning på emnet:

Om Versjonskontroll

Før vi kommer i gang, bør vi se gjennom hva versjonskontrollen er. EN Versjonskontrollsystem er en programvare løsning som lett kan lagre revisjoner av koden din og andre data, slik at du kan rulle tilbake til tidligere versjoner, gjennomgå endringer som er gjort, og dele oppdateringer med samarbeidspartnere. 

Det er mange fordeler og bruk saker for versjonskontroll. For eksempel ved å se gjennom endringene ("forplikter") til prosjektet ditt, kan du identifisere hvem som skrev noen bestemt kode og hvorfor. Du kan også rulle tilbake eventuelle endringer som ble funnet å være feil eller for å bryte funksjonalitet.

Det mest brukte versjonskontrollsystemet i dag er Git, så det er det vi skal se på i dette innlegget. Vær oppmerksom på at det finnes andre mye brukte systemer, men for eksempel SVN og Mercurial. 

Nøkkelvilkår og begreper

  • oppbevaringssted eller repo-inneholder all koden for et enkelt prosjekt, sammen med hele endringshistorikken til hver fil.
  • arbeidskatalog-Når du redigerer koden din, gjør du endringer i arbeidskatalogen din. Hvis du vil lagre disse endringene i repo, må du lage en begå. Hvis alle endringene i arbeidskatalogen har vært forpliktet til repo, er arbeidskatalogen ren.
  • begå-en gruppe endringer i kildefiler. Vanligvis er disse endringene gruppert sammen, slik at hver forpliktelse gjelder en enkelt feilrettelse eller -funksjon.
  • gren-Arbeidet på et prosjekt kan organiseres i grener. Dette gjør at en utvikler eller gruppe av utviklere jobber med en funksjon, mens en annen utvikler jobber med en annen funksjon. 
  • slå sammen-bringer endringene i to grener sammen. Ofte kan dette gjøres automatisk av Git, men hvis det er det konflikter, Du må kanskje fortelle Git manuelt hvordan du kan slå sammen filene.

Repository Management Services

Når du bruker versjonskontroll, oppretter du en oppbevaringssted, eller repo, og det er mest vanlig å være vert for denne repoen på en Repository Management Service. I denne veiledningen vil vi ikke være vert for vår repo hvor som helst, slik at du kan fokusere på å bruke versjonskontroll. Hvis du vil, kan du lese på disse depotstyringstjenestene, og du bør kunne bruke denne kunnskapen til dem hvis du ønsker det. 

Noen eksempler på disse er GitHub, Bitbucket, GitLab og Coding, og de brukes mye av utviklere over hele verden. Jeg og mange andre bruker GitHub fordi det er vert for et stort antall open source-prosjekter. GitHub repos er offentlig som standard, men du kan opprette private repos for en månedlig avgift.

Starter

Opprette et program

For å starte, må du opprette et nytt program i Xcode. For denne appen kan du bruke hvilken som helst mal du ønsker, og hvis du har en nåværende app som har et Git-depot, kan du også bruke det for denne opplæringen.

Her er hva IDE skal se ut like før du endelig lager prosjektet ditt (når du må bestemme plasseringen for å lagre prosjektet):

Pass på at boksen som sier Opprett Git-depot på min Mac er sjekket, da dette vil sikre at prosjektet ditt internt har repoen. Senere, hvis du velger å bruke et depotstyringssystem, vil du kunne trykk all denne koden, og alle begå du noensinne har laget vil dukke opp.

Åpning av terminalen

For å komme til kommandolinjen må du åpne Terminal. Du kan gjøre dette på en av to måter. Du kan åpne Launchpad, og der kan du finne Terminal ikonet i Annen mappe på første side av Launchpad. Eller du kan treffe Command-Space på tastaturet og søke etter Terminal i Spotlight.

Når du åpner terminalen, bør du se noe som følger.

Dette kalles "kommandoprompt" - du vil se den nåværende katalogen, deretter brukernavnet ditt etterfulgt av en $.

Greit! Du er nå klar til å lære om hvordan du bruker versjonskontroll på Terminal.

Terminal Commands Cheat Sheet

Her er noen av de grunnleggende kommandoene jeg skrev om i min veiledning om å komme i gang med Terminal. Du må kjenne disse for å kunne bruke terminalen effektivt. 

Hjelp

  • hjelp-Som navnet antyder, kan du skrive denne kommandoen til Terminal for å få en liste over forskjellige kommandoer.
  • Mann -I likhet med forrige kommando, forteller denne kommandoen nøyaktig hva en kommando gjør (og gir deg full dokumentasjon) uten at du må søke Google for det.

Filbehandling

  • ls-Viser alt innholdet i gjeldende katalog. Denne kommandoen er nyttig hvis du ikke vil bruke Finder til å bla gjennom filer - du kan bare liste dem ved hjelp av denne kommandoen i Terminal.
  • cd -Denne kommandoen brukes til å endre kataloger. Hvis du skriver cd alene, vil du flytte ut av gjeldende katalog. Etter bruk ls (for å se katalogene), kan du skrive navnet på katalogen du vil skrive inn.

Endre innstillinger

  • mislighold -Denne kommandoen brukes til å endre standard systeminnstillinger, hvorav noen ikke kan endres uten å bruke terminalen.
  • caffeinate-Som navnet antyder, er denne kommandoen brukt til å forhindre at Mac-maskinen din dimming, slår av eller sover. For å avslutte dette, er alt du trenger å gjøre, å trykke Kontroll-C.

Tekstredigering

  • vim -Dette er en av mine favoritter. Du kan redigere tekstfiler ved hjelp av standard TextEdit (eller en GUI-basert editor), men vim er i utgangspunktet en kommandolinje tekstredigerer-det vil si, det virker helt innenfor terminalen.

Nettverk

  • ping -Denne kommandoen lar deg sjekke serverens svartid for en spesifisert nettadresse eller IP-adresse. Dette kan ikke være nyttig for alle utviklere, men det er fint å vite.

admin

  • sudo -en måte å overstyre brukerens privilegier og bli en superbruker av datamaskinen. Du blir bedt om et administratorpassord når du bruker det.

Ulike Git-kommandoer

Nå som du har sett noen grunnleggende terminalkommandoer, la oss lære om de forskjellige tingene du kan gjøre med Git. Jeg vil ikke dekke dem alle, men jeg vil lære deg om de viktigste som du skal bruke i den daglige utviklingen. Hvis du noen gang trenger mer informasjon, kan du bare kjøre git hjelp i din terminal for detaljer, og hvis det ikke er nok, kan du kjøre full dokumentasjon mann git for å få den manuelle siden.

Slik ser hjelpesidene ut:

Opprette et prosjekt

  • git klone remote-repo-link-hvis du vil klone et lager fra en lageradministrasjonstjeneste, kan du bruke denne kommandoen sammen med nettadressen for å få en lokal kopi på datamaskinen din.
  • git init-Hvis du oppretter et nytt lager fra en eksisterende mappe, kan du bruke denne kommandoen. Den vil initialisere gjeldende mappe for å være en ny repo. Vanligvis vil du gjøre dette når du oppretter et prosjekt for første gang.

Forbinde endringer

  • git status-forteller deg hvilke filer i arbeidskatalogen du har endret. Hvis du har endret filer, kan det være på tide å gjøre en forpliktelse!
  • git commit -am "nyttig commit message"-Når du har gjort noen endringer i prosjektet ditt (for eksempel når du har fullført en enkel funksjon eller gjort en feilretting), bør du forplikte endringen. Pass på å gi en kortfattet og klar forpliktelsesmelding, da dette vil hjelpe andre utviklere å forstå hva du har gjort og hvorfor.
  • git legg til filnavn eller git add --all-Hvis du legger til en ny fil i repo, må du legge den til repoen før du forplikter den. Bruke Legg til kommando. 

Repository Branches

  • git grenen filnavn?-Med denne kommandoen kan du enten liste de nåværende grenene eller opprette en ny.
  • git fusjon grennavn-slå sammen den nåværende grenen med grenen som er angitt. Dette vil kombinere koden i den nåværende grenen med den navngitte.
  • git checkout filnavn-bytt til den angitte grenen. Dette vil ganske enkelt sette den nåværende grenen til side og gjøre den andre grenen aktiv.

Repository Management Systems

  • git push-oppdaterer lageret i lagringsstyringssystemet. Når du er ferdig med å gjøre endringer og er sikker på at koden din fungerer bra, kan du trykke på koden din slik at andre medlemmer kan se koden og trekke den.
  • git pull-oppdaterer din lokale arbeidskopi av repo for å gjenspeile de nyeste oppdateringene som er blitt presset til depotstyringssystemet. Det er en god ide å gjøre dette før du gjør noen endringer hvis du jobber med et lag.

Det er noen av de viktigste kommandoene du vil bruke i versjonskontroll for å komme i gang, men før vi avslutter denne opplæringen, la oss se på noen av disse i dybden med Xcode-prosjektet som vi opprettet tidligere.

Eksempel på bruk av Git Med et Xcode-prosjekt

Nå, la oss se på noen få eksempler på hvordan du bruker kommandolinje Git med Xcode-prosjektet som vi opprettet tidligere i denne opplæringen. Vær oppmerksom på at vi skal bruke terminalkommandoene ovenfor, så sørg for at du fortsetter å henvise til dem eller huske dem.

Naviger til prosjektlisten

Før vi begynner, må du navigere til prosjektkatalogen ved hjelp av kommandoene som er nevnt ovenfor (hint: bruk cd og ls kommandoer). Når du er der, løp ls og sørg for at du har noe slikt:

Ta-da! Nå er du i prosjektkatalogen din og klar til å gjøre alt du trenger med prosjektet ditt. Bare følg med som vi forplikter og grener.

Begå

Å forplikte koden er det du vil gjøre oftest i programmeringen. Så snart du gjør en arbeidsendring, er det best å forplikte det med detaljerte kommentarer.

Gjør en endring

For å starte, gjør en endring til Xcode-prosjektet. For min, vil jeg bare legge til følgende linje dummy kode i min viewDidLoad () metode:

la foobar = "foo"

Få statusen

Når du er ferdig med å legge til (eller subtrahere) en linje eller to kode, er du klar til å sjekke statusen til prosjektet ditt. For å gjøre dette, lim inn følgende kommando (minus $ spørre) i terminalvinduet ditt:

$ git status

Du ser noe slikt:

Filen du har endret er uthevet i rødt, som forteller deg at den har ubegrensede endringer.

Legge til filer i Staging Area

Hvis du bare vil forpligte bestemte filer, kan du gjøre det ved å bruke et "staging-område" der bare de filene vil bli forpliktet. Hvis du vil legge til alle de endrede filene i "oppsamlingsområdet", er alt du trenger å gjøre, å kjøre følgende kodekode:

$ git add -A

De -EN flagget som du ser betyr at alle filene du har endret vil bli lagt til (-EN er for alle, og du kan også skrive git add --all). 

For å se at filene dine er klare til å begå, bare kjør følgende igjen:

$ git status

Du ser noe slikt:

Se? Den samme filen som var rød er nå grønn, noe som indikerer at du har klart å forberede den til å forplikte. 

Forplikte koden din

Til slutt, for å endelig forplikte koden din, er alt du trenger å gjøre, kjør følgende kommando i terminalen din, og mellom anførselstegn legger du til en melding.

$ git commit -m "My very first commit."

De -m flagg forteller Terminal at du vil legge til en melding til filen din, og det er ganske viktig å være klar med denne meldingen. Disse meldingene er avgjørende for å holde rede på endringene i prosjektet ditt.

Nå har du gjort din aller første forpliktelse! Du er på rett spor for å gjøre koden enklere og sikrere.

grener

Den nest vanligste tingen du vil gjøre som utvikler, er å opprette, slå sammen og bruke grener til å sortere ut koden og isolere funksjoner før du ruller dem ut til kundene.

Opprette en ny filial

Som standard er du i det vi kaller "master" -grenen. Det er hovedgrenen som til slutt bør altes i. Beste praksis, spesielt med et lag, er å jobbe med nye hovedtrekk i sine egne grener, som blir fusjonert tilbake til mester når de er ferdige.

Å øve med å jobbe med grener, la oss lage en ny gren. For å gjøre dette, kjør følgende kommando:

$ git grenen min første grenen

Du kan navngi grenen uansett hva du vil. 

For å se den nye grenen, kan du skrive:

$ git grenen

Når du kjører den kommandoen, ser du noe slikt:

Legg merke til at du kan se to grener: herre og min-første-gren (eller hva du kalt filialen din). I tillegg vil du se at det er en stjerne av herre gren, som indikerer at du for tiden er i den grenen.

Sjekker ut en nåværende gren

Hvis du trenger å bytte til en annen eksisterende gren, må du Sjekk ut den grenen. Når du gjør dette, forlater du den nåværende grenen, og hele koden forblir intakt (sammen med de lokale endringene), men arbeidsboken din vil bli fylt med koden fra avdelingen du sjekket ut.

Prøv det med følgende kommando:

$ git checkout min første grenen

Du bør få en bekreftelse som ser noe ut som dette:

Nå bytter du til denne grenen, og den skal være en ren skifer. For å bekrefte dette, kjør git status for å sjekke om det er noen endrede filer. 

Sammenslåing av grener

Etter at du er ferdig med å gjøre endringer, vil du normalt slå sammen grenen til hovedgrenen. Vi har ikke gjort noen endringer, så la oss gjøre det nå før vi smelter sammen de to grenene.

Gjør en annen endring til Xcode-prosjektet. For min, vil jeg bare legge til følgende linje dummy kode i min viewDidLoad () metode:

la gooey = "fooey"

Du kan gjøre noen endringer du liker. Bare vær sikker på at du vet hvilken fil og hva du endrer.

Etter at det er gjort, kjør du igjen følgende linje av kode:

$ git status

Nå bør du se filnavnet i rødt, og du må plikte før du slår sammen denne endringen tilbake til hovedgrenen din. Jeg stoler på at du vet hvordan du gjør det, så la oss hoppe videre til neste trinn. Dobbeltklikk at begåingen var vellykket med git status.

Ved nå burde du ha begått koden, så la oss bli klare til å slå sammen de to grenene. Først kjør følgende kommando:

$ git checkout mester

Denne kommandoen bytter til herre gren for å forberede seg til å fusjonere med den andre grenen som vi opprettet. Til slutt, for å slå sammen, kjør følgende kommando:

$ git flette min første grenen

Du bør få en bekreftelse som ser slik ut:

Nå har endringene dine fra funksjonen grenen blitt fusjonert tilbake til mesteren. Hvis hovedavdelingen har endret seg siden grenen ble opprettet, vil Git forsøke å kombinere funksjonen forgreningsendringer med master automatisk. Hvis det ikke kan gjøres automatisk, vil det be deg om å løse eventuelle konflikter manuelt.

Nå vet du hvordan du kan slå sammen grener, lage dem, og bytte mellom dem ved å bruke bare Terminal!

Konklusjon

Som du ser, er det ikke så vanskelig å gjøre versjonskontroll med prosjektet ditt, og belønningene er vel verdt det. Versjonskontroll er en kjernevirksomhet, og du bør være kjent med det hvis du vil jobbe i en faglig sammenheng. 

Jeg håper dette innlegget har gitt deg tilliten til å bruke versjonskontroll på en daglig basis. Hvis du vil lære mer om Git, sjekk ut noen av våre animerte instruksjonsvideoer her på Envato Tuts+.