Sådan bruges Git Version Control System i Linux [Omfattende vejledning]


Versionskontrol (revisionskontrol eller kildekontrol) er en måde at registrere ændringer på en fil eller samling af filer over tid, så du kan huske specifikke versioner senere. Et versionskontrolsystem (eller kort sagt VCS) er et værktøj, der registrerer ændringer i filer på et filsystem.

Der er mange versionskontrolsystemer derude, men Git er i øjeblikket det mest populære og ofte brugt, især til kildekodestyring. Versionskontrol kan faktisk bruges til næsten alle typer filer på en computer, ikke kun kildekode.

Versionskontrolsystemer/-værktøjer tilbyder flere funktioner, der gør det muligt for enkeltpersoner eller en gruppe mennesker at:

  • Opret versioner af et projekt.
  • spore ændringer nøjagtigt og løse konflikter.
  • flet ændringer til en almindelig version.
  • tilbageførsel og fortryd ændringer til valgte filer eller et helt projekt.
  • få adgang til historiske versioner af et projekt for at sammenligne ændringer over tid.
  • se hvem der sidst har ændret noget, der muligvis forårsager et problem.
  • Opret en sikker offsite-sikkerhedskopi af et projekt.
  • brug flere maskiner til at arbejde på et enkelt projekt og så meget mere.

Et projekt under et versionskontrolsystem som Git vil hovedsagelig have tre sektioner, nemlig:

  • et lager: en database til registrering af tilstanden til eller ændringer af dine projektfiler. Den indeholder alle de nødvendige Git-metadata og objekter til det nye projekt. Bemærk, at dette normalt kopieres, når du kloner et lager fra en anden computer på et netværk eller ekstern server.
  • en arbejdsmappe eller et arbejdsområde: gemmer en kopi af projektfilerne, som du kan arbejde på (foretag tilføjelser, sletninger og andre ændringer).
  • et mellemstationer: en fil (kendt som indeks under Git) i Git-biblioteket, der gemmer oplysninger om ændringer, som du er klar til at begå (gemme tilstanden for en fil eller et sæt filer) til lageret.

Der er to hovedtyper af VCS'er, hvor den største forskel er antallet af arkiver:

  • Centraliserede versionskontrolsystemer (CVCS'er): her får hvert projektmedlem deres eget lokale arbejdsmappe, men de forpligter sig til kun et enkelt centralt arkiv.
  • Distribuerede versionskontrolsystemer (DVCS'er): under dette får hvert projektteammedlem deres eget lokale arbejdskatalog og Git-katalog, hvor de kan foretage forpligtelser. Når en person har forpligtet sig lokalt, kan andre teammedlemmer ikke få adgang til ændringerne, før han/hun skubber dem til det centrale lager. Git er et eksempel på en DVCS.

Derudover kan et Git-arkiv være blottet (lager, der ikke har et fungerende bibliotek) eller ikke-blottet (et med et arbejdskatalog). Delte (eller offentlige eller centrale) opbevaringssteder skal altid være nøgne - alle Github-opbevaringssteder er nøgne.

Lær versionskontrol med Git

Git er et gratis og open source, hurtigt, kraftfuldt, distribueret, let at bruge og populært versionskontrolsystem, der er meget effektivt med store projekter og har et bemærkelsesværdigt forgrenings- og fusioneringssystem. Det er designet til at håndtere data mere som en række snapshots af et mini-filsystem, der er gemt i et Git-bibliotek.

Arbejdsgangen under Git er meget enkel: du foretager ændringer i filer i din arbejdsmappe og tilføjer derefter selektivt bare de filer, der er ændret, til iscenesættelsesområdet for at være en del af din næste forpligtelse.

Når du er klar, foretager du en forpligtelse, der tager filerne fra iscenesættelsesområdet og gemmer dette øjebliksbillede permanent i Git-biblioteket.

For at installere Git i Linux skal du bruge den relevante kommando til din valgte distribution:

$ sudo apt install git   [On Debian/Ubuntu]
$ sudo yum install git   [On CentOS/RHEL]

Efter installation af Git anbefales det, at du fortæller Git, hvem du er ved at angive dit fulde navn og din e-mail-adresse som følger:

$ git config --global user.name “Aaron Kili”
$ git config --global user.email “[email ”

Brug følgende kommando for at kontrollere dine Git-indstillinger.

$ git config --list 

Opretter et nyt Git-arkiv

Delt arkiver eller centraliserede arbejdsgange er meget almindelige, og det er det, vi vil demonstrere her. For eksempel antager vi, at du har fået til opgave at konfigurere et eksternt centralt lager til systemadministratorer/programmører fra forskellige afdelinger i din organisation til at arbejde på et projekt kaldet bashscripts, som vil blive gemt under/projects/scritpts/på serveren.

SSH i fjernserveren og opret den nødvendige mappe, opret en gruppe kaldet sysadmins (tilføj alle projektteammedlemmer til denne gruppe, fx brugeradministrator), og indstil de relevante tilladelser til denne mappe.

# mkdir-p /projects/scripts/
# groupadd sysadmins
# usermod -aG sysadmins admin
# chown :sysadmins -R /projects/scripts/
# chmod 770 -R /projects/scripts/

Initialiser derefter et nøgent projektlager.

# git init --bare /projects/scripts/bashscripts

På dette tidspunkt har du med succes initialiseret en bare Git-mappe, som er det centrale lagerfacilitet for projektet. Prøv at lave en liste over biblioteket for at se alle filer og mapper derinde:

# ls -la /projects/scripts/bashscripts/

Klon et Git-arkiv

Klon nu det eksterne delte Git-arkiv til din lokale computer via SSH (du kan også klone via HTTP/HTTPS, hvis du har en webserver installeret og konfigureret korrekt, som det er tilfældet med de fleste offentlige arkiver på Github), for eksempel:

$ git clone ssh://[email _server_ip:/projects/scripts/bashscripts 

Brug kommandoen nedenfor for at klone den til en bestemt mappe (~/bin/bashscripts).

$ git clone ssh://[email _server_ip:/projects/scripts/bashscripts ~/bin/bashscripts

Du har nu en lokal forekomst af projektet i et ikke-frit arkiv (med en arbejdsmappe), du kan oprette projektets indledende struktur (dvs. tilføje en README.md-fil, underkataloger til forskellige kategorier af scripts, f.eks. at gemme rekognosceringsskripter, sysadmin ro butik sysadmin-scripts osv.):

$ cd ~/bin/bashscripts/
$ ls -la

Tjek en Git-statusoversigt

For at få vist status for din arbejdsmappe skal du bruge statuskommandoen, der viser dig de ændringer, du har foretaget; hvilke filer der ikke spores af Git; de ændringer, der er iscenesat og så videre.

$ git status 

Git Stage Changes and Commit

Dernæst udfør alle ændringer ved hjælp af tilføjkommandoen med -A -kontakten og udfør den første forpligtelse. Flagget -a instruerer kommandoen til automatisk at iscenesætte filer, der er blevet ændret, og -m bruges til at specificere en forpligtelsesmeddelelse:

$ git add -A
$ git commit -a -m "Initial Commit"

Offentliggør lokale forpligtelser til Remote Git Repository

Når projektteamet leder, nu hvor du har oprettet projektstrukturen, kan du offentliggøre ændringerne i det centrale lager ved hjælp af kommandoen push som vist.

$ git push origin master

Lige nu skal dit lokale git-arkiv være opdateret med projektets centrale lager (origin), du kan bekræfte dette ved at køre statuskommandoen igen.

$ git status

Du kan også informere dine kolleger om at begynde at arbejde på projektet ved at klone lageret til deres lokale computere.

Opret en ny Git-gren

Forgrening giver dig mulighed for at arbejde på en funktion i dit projekt eller løse problemer hurtigt uden at røre ved kodebasen (hovedfilial). For at oprette en ny gren og derefter skifte til den skal du bruge henholdsvis filial- og kassekommandoer.

$ git branch latest
$ git checkout latest

Alternativt kan du oprette en ny gren og skifte til den i et trin ved hjælp af checkout-kommandoen med -b flag.

$ git checkout -b latest

Du kan f.eks. Også oprette en ny gren baseret på en anden gren.

$ git checkout -b latest master

For at kontrollere, hvilken gren du befinder dig i, skal du bruge filialkommando (et stjerne tegn angiver den aktive gren):

$ git branch

Når du har oprettet og skiftet til den nye gren, skal du foretage nogle ændringer under den og foretage nogle forpligtelser.

$ vim sysadmin/topprocs.sh
$ git status
$ git commit add  sysadmin/topprocs.sh
$ git commit -a -m 'modified topprocs.sh'

Flet ændringer fra en gren til en anden

For at flette ændringerne under grenprøven i mastergrenen skal du skifte til mastergrenen og udføre fletningen.

$ git checkout master 
$ git merge test 

Hvis du ikke længere har brug for en bestemt gren, kan du slette den ved hjælp af -d -kontakten.

$ git branch -d test

Download ændringer fra det centrale centrale arkiv

Forudsat at dine teammedlemmer har skubbet ændringer til det centrale projektlager, kan du downloade eventuelle ændringer til din lokale forekomst af projektet ved hjælp af pull-kommandoen.

$ git pull origin
OR
$ git pull origin master	#if you have switched to another branch

Undersøg Git Repository og udfør sammenligninger

I dette sidste afsnit vil vi dække nogle nyttige Git-funktioner, der holder styr på alle aktiviteter, der skete i dit arkiv, hvilket gør det muligt for dig at se projekthistorikken.

Den første funktion er Git-log, som viser forpligtelseslogfiler:

$ git log

En anden vigtig funktion er showkommandoen, der viser forskellige typer objekter (såsom commits, tags, træer osv ..):

$ git show

Den tredje vigtige funktion, du skal vide, er diff-kommandoen, der bruges til at sammenligne eller vise forskel mellem grene, vise ændringer mellem arbejdskataloget og indekset, skifte mellem to filer på disken og så meget mere.

For eksempel for at vise forskellen mellem masteren og den nyeste gren kan du køre følgende kommando.

$ git diff master latest

Git giver et team af mennesker mulighed for at arbejde sammen ved hjælp af de samme filer, mens de optager ændringer til filerne over tid, så de kan huske specifikke versioner senere.

På denne måde kan du bruge Git til styring af kildekode, konfigurationsfiler eller enhver fil, der er gemt på en computer. Det kan være en god idé at henvise til Git Online-dokumentationen for yderligere dokumentation.