Hvad er versionsstyring?
Et versionskontrolsystem (VCS) er et program eller et sæt programmer, der sporer ændringer af en samling filer. Et mål med en VCS er nemt at huske tidligere versioner af individuelle filer eller af hele projektet. Et andet mål er at give flere teammedlemmer mulighed for at arbejde på et projekt, selv på de samme filer, på samme tid uden at påvirke hinandens arbejde.
Et andet navn til en VCS er et SCM-system (Software Configuration Management). De to begreber bruges ofte i flæng – faktisk er Gits officielle dokumentation placeret på git-scm.com. Teknisk set er versionsstyring blot en af de fremgangsmåder, der er involveret i SCM. En VCS kan bruges til andre projekter end software, herunder bøger og online selvstudier.
Med en VCS kan du:
- Se alle de ændringer, der er foretaget i projektet, hvornår ændringerne blev foretaget, og hvem der har foretaget dem.
- Medtag en meddelelse med hver ændring for at forklare ræsonneringerne bag den.
- Hent tidligere versioner af hele projektet eller af individuelle filer.
- Opret forgreninger, hvor ændringer kan foretages eksperimentelt. Denne funktion gør det muligt at arbejde med flere forskellige sæt ændringer (f.eks. funktioner eller fejlrettelser) på samme tid, muligvis af forskellige personer, uden at det påvirker hovedgrenen. Senere kan du flette de ændringer, du vil beholde, i hovedgrenen.
- Vedhæft et mærke til en version – f.eks. for at markere en ny version.
Git er en hurtig, alsidig, yderst skalerbar, gratis VCS med åben kildekode. Dens primære forfatter er Linus Torvalds, skaberen af Linux.
Kontrolelementet Distribueret version
Tidligere forekomster af VCSes, herunder CVS, Subversion (SVN) og Perforce, brugte en central server til at gemme et projekts historik. Denne centralisering betød, at den ene server også var et enkelt fejlpunkt.
Git distribueres , hvilket betyder, at et projekts fuldstændige historik gemmes både på klientens og på serveren. Du kan redigere filer uden en netværksforbindelse, tjekke dem ind lokalt og synkronisere med serveren, når en forbindelse bliver tilgængelig. Hvis en server går ned, har du stadig en lokal kopi af projektet. Teknisk set behøver du ikke engang at have en server. Ændringer kan overføres via mail eller deles ved hjælp af flytbare medier, men ingen bruger Git på denne måde i praksis.
Git-terminologi
Hvis du vil forstå Git, skal du forstå terminologien. Her er en kort liste over ord, som Git-brugere ofte bruger. Vær ikke bekymret for detaljerne i øjeblikket. alle disse begreber bliver bekendt, når du arbejder dig gennem øvelserne i dette modul.
arbejdstræ: Sættet af indlejrede mapper og filer, der indeholder det projekt, der arbejdes på.
lager (lager): Mappen, der er placeret på øverste niveau i et arbejdstræ, hvor Git gemmer hele historikken og metadataene for et projekt. Lagre kaldes næsten altid lagre. Et bare lager er et lager, der ikke er en del af et arbejdstræ. det bruges til deling eller sikkerhedskopiering. Et bare lager er normalt en mappe med et navn, der ender på .git-– f.eks. project.git.
Hash: Et tal, der er produceret af en hashfunktion, der repræsenterer indholdet af en fil eller et andet objekt som et fast antal cifre. Git bruger hashværdier, der er 160 bit lange. En fordel ved at bruge hash er, at Git kan se, om en fil er blevet ændret, ved at hashkode indholdet og sammenligne resultatet med den forrige hashværdi. Hvis filens tids- og datostempel ændres, men filhashen ikke ændres, ved Git, at filens indhold ikke ændres.
Object: Et Git-lager indeholder fire typer objekter, hver især entydigt identificeret af en SHA-1-hash. Et blob- objekt indeholder en almindelig fil. Et træ objekt repræsenterer en mappe. Den indeholder navne, hashen og tilladelser. Et bekræfte objekt repræsenterer en bestemt version af arbejdstræet. Et tag er et navn, der er knyttet til en bekræftelse.
Commit: Når bruges som et verbum, betyder at oprette et bekræftelsesobjekt. Denne handling henter sit navn fra bekræftelser til en database. Det betyder, at du foretager de ændringer, du har foretaget, så andre også kan se dem på et tidspunkt.
Forgrening: En forgrening er en navngivet serie af sammenkædede bekræftelser. Den seneste bekræftelse på en forgrening kaldes hoved. Standardgrenen, der oprettes, når du initialiserer et lager, kaldes
main
, der ofte kaldesmaster
i Git. Hovedet på den aktuelle forgrening hedderHEAD
. Forgreninger er en utrolig nyttig funktion i Git, fordi de gør det muligt for udviklere at arbejde selvstændigt (eller sammen) i forgreninger og senere flette deres ændringer til standardgrenen.Remote: En ekstern er en navngiven reference til et andet Git-lager. Når du opretter et lager, opretter Git en fjernforbindelse med navnet
origin
, der er standardfjern for push- og pullhandlinger.Kommandoer, underkommandoerog indstillinger: Git-handlinger udføres ved hjælp af kommandoer som
git push
oggit pull
.git
er kommandoen, ogpush
ellerpull
er underkommandoen. Underkommandoen angiver den handling, som Git skal udføre. Kommandoer ledsages ofte af indstillinger, der bruger bindestreger (-) eller dobbelte bindestreger (--). Du kan f.eks.git reset --hard
.
Disse begreber og andre, f.eks. push
og pull
, giver snart mere mening. Men du er nødt til at starte et sted, og du kan finde det nyttigt at vende tilbage og gennemgå denne ordliste med ord, når du er færdig med modulet.
Git-kommandolinjen
Der findes flere forskellige GUI'er til Git, herunder GitHub Desktop. Mange programmeringseditorer, f.eks. Microsoft Visual Studio Code, har også en grænseflade til Git. De fungerer alle forskelligt, og de har forskellige begrænsninger. Ingen af dem implementerer alle af Gits funktionalitet.
Øvelserne i dette modul bruger Git-kommandolinjen – specifikt Git-kommandoer, der udføres i Azure Cloud Shell. Gits kommandolinjegrænseflade fungerer dog på samme måde, uanset hvilket operativsystem du bruger. Kommandolinjen giver dig også mulighed for at trykke på alle af Gits funktionalitet. Udviklere, der kun ser Git via en GUI, oplever nogle gange, at de bliver konfronteret med fejlmeddelelser, de ikke kan løse, og de er nødt til at ty til kommandolinjen for at komme i gang igen.
Git og GitHub
Når du arbejder med Git, kan du undre dig over forskellene mellem de funktioner, der tilbydes, og de funktioner, der tilbydes på GitHub.
Som tidligere nævnt er Git et distribueret versionskontrolsystem (DVCS), som flere udviklere og andre bidragydere kan bruge til at arbejde på et projekt. Det gør det nemmere at arbejde med en eller flere lokale forgreninger og derefter overføre dem til et eksternt lager.
GitHub er en cloudplatform, der bruger Git som kerneteknologi. GitHub forenkler processen med at samarbejde om projekter og leverer et websted, flere kommandolinjeværktøjer og et samlet flow, som udviklere og brugere kan bruge til at arbejde sammen. GitHub fungerer som det tidligere nævnte fjernlager.
Nøglefunktioner, der leveres af GitHub, omfatter:
- Spørgsmål
- Diskussioner
- Pull-anmodninger
- Meddelelser
- Etiketter
- Handlinger
- Gafler
- Projekter
Du kan få mere at vide om GitHub i Introduktion til GitHub Microsoft Learn-modulet eller i dokumentationen til Introduktion til GitHub hjælp.
Det næste trin er at prøve Git for dig selv!