Zoeken op website

Hoe Git versiecontrolesysteem in Linux te gebruiken [uitgebreide handleiding]


Versiebeheer (revisiebeheer of bronbeheer) is een manier om wijzigingen in een bestand of een verzameling bestanden in de loop van de tijd vast te leggen, zodat u specifieke versies later kunt oproepen. Een versiebeheersysteem (of kortweg VCS) is een hulpmiddel dat wijzigingen in bestanden op een bestandssysteem registreert.

Er zijn veel versiebeheersystemen beschikbaar, maar Git is momenteel het meest populair en meest gebruikt, vooral voor broncodebeheer. Versiebeheer kan feitelijk voor vrijwel elk type bestand op een computer worden gebruikt, niet alleen voor de broncode.

Versiebeheersystemen/tools bieden verschillende functies waarmee individuen of een groep mensen:

  • versies van een project maken.
  • houd veranderingen nauwkeurig bij en los conflicten op.
  • wijzigingen samenvoegen tot een gemeenschappelijke versie.
  • wijzigingen in geselecteerde bestanden of een heel project terugdraaien en ongedaan maken.
  • toegang krijgen tot historische versies van een project om veranderingen in de loop van de tijd te vergelijken.
  • zien wie voor het laatst iets heeft gewijzigd dat mogelijk een probleem veroorzaakt.
  • maak een veilige externe back-up van een project.
  • gebruik meerdere machines om aan één project te werken en nog veel meer.

Een project onder een versiebeheersysteem zoals Git zal hoofdzakelijk uit drie secties bestaan, namelijk:

  • een repository: een database voor het vastleggen van de status of wijzigingen in uw projectbestanden. Het bevat alle noodzakelijke Git-metagegevens en objecten voor het nieuwe project. Houd er rekening mee dat dit normaal gesproken wordt gekopieerd als u een repository kloont vanaf een andere computer op een netwerk of op een externe server.
  • een werkmap of gebied: slaat een kopie op van de projectbestanden waaraan u kunt werken (toevoegingen, verwijderingen en andere wijzigingsacties maken).
  • een verzamelgebied: een bestand (bekend als index onder Git) binnen de Git-directory, waarin informatie wordt opgeslagen over wijzigingen die u bereid bent door te voeren (de status van een bestand of een reeks bestanden opslaan) in de repository.

Er zijn twee hoofdtypen VCS'en, met als belangrijkste verschil het aantal repository's:

  • Gecentraliseerde versiebeheersystemen (CVCS's): hier krijgt elk projectteamlid zijn eigen lokale werkmap, maar wijzigingen kunnen in slechts één centrale opslagplaats worden vastgelegd.
  • Gedistribueerde versiebeheersystemen (DVCS's): hieronder krijgt elk projectteamlid zijn eigen lokale werkmap en Git-map waar hij commits kan maken. Nadat een individu lokaal een commit heeft gedaan, hebben andere teamleden geen toegang tot de wijzigingen totdat hij/zij deze naar de centrale repository pusht. Git is een voorbeeld van een DVCS.

Bovendien kan een Git repository bare zijn (repository die geen werkmap heeft) of niet-bare (een met een werkende map) map). Gedeelde (of openbare of centrale) opslagplaatsen moeten altijd kaal zijn – alle Github-opslagplaatsen zijn kaal.

Leer versiebeheer met Git

Git is een gratis en open source, snel, krachtig, gedistribueerd, gemakkelijk te gebruiken en populair versiebeheersysteem dat zeer efficiënt is bij grote projecten en een opmerkelijk vertakkings- en samenvoegsysteem heeft. Het is ontworpen om gegevens te verwerken als een reeks snapshots van een minibestandssysteem, dat is opgeslagen in een Git-directory.

De workflow onder Git is heel eenvoudig: je brengt wijzigingen aan in bestanden in je werkdirectory en voegt vervolgens selectief alleen die bestanden die zijn gewijzigd toe aan het verzamelgebied, om deel uit te maken van je volgende commit.

Zodra je klaar bent, voer je een commit uit, die de bestanden uit het staginggebied haalt en die momentopname permanent in de Git-directory opslaat.

Om Git in Linux te installeren, gebruik je het juiste commando voor de distributie naar keuze:

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

Na het installeren van Git wordt aanbevolen dat u Git vertelt wie u bent door uw volledige naam en e-mailadres op te geven, als volgt:

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

Gebruik de volgende opdracht om uw Git-instellingen te controleren.

git config --list 

Creëert een nieuwe Git-repository

Gedeelde opslagplaatsen of gecentraliseerde workflows zijn heel gebruikelijk en dat is wat we hier zullen demonstreren. We gaan er bijvoorbeeld van uit dat u de opdracht heeft gekregen om een centrale opslagplaats op afstand op te zetten voor systeembeheerders/programmeurs van verschillende afdelingen in uw organisatie, om te werken aan een project met de naam bashscripts, dat wordt opgeslagen onder /projects/scritpts/ op de server.

SSH naar de externe server en maak de benodigde map aan, maak een groep met de naam sysadmins (voeg alle projectteamleden toe aan deze groep, bijvoorbeeld gebruikersbeheerder) en stel de juiste machtigingen in deze map.

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

Initialiseer vervolgens een kale projectrepository.

git init --bare /projects/scripts/bashscripts

Op dit punt heb je met succes een kale Git map geïnitialiseerd die de centrale opslagfaciliteit voor het project is. Probeer een lijst van de map te maken om alle bestanden en mappen daarin te zien:

ls -la /projects/scripts/bashscripts/

Kloon een Git-repository

Kloon nu de externe gedeelde Git-repository naar uw lokale computer via SSH (u kunt ook klonen via HTTP/HTTPS als u een webserver hebt geïnstalleerd en op de juiste manier geconfigureerd, zoals de geval met de meeste openbare repositories op Github), bijvoorbeeld:

git clone ssh://admin@remote_server_ip:/projects/scripts/bashscripts 

Gebruik de onderstaande opdracht om het naar een specifieke map (~/bin/bashscripts) te klonen.

git clone ssh://admin@remote_server_ip:/projects/scripts/bashscripts ~/bin/bashscripts

U heeft nu een lokale instantie van het project in een niet-bare repository (met een werkmap). U kunt de initiële structuur van het project creëren (d.w.z. een README.md toevoegen bestand, submappen voor verschillende categorieën scripts, bijvoorbeeld recon om verkenningsscripts op te slaan, sysadmin ro winkel sysadmin-scripts enz.):

cd ~/bin/bashscripts/
ls -la

Controleer een Git-statusoverzicht

Om de status van uw werkmap weer te geven, gebruikt u het statuscommando, waarmee u alle wijzigingen kunt zien die u heeft aangebracht; welke bestanden worden niet gevolgd door Git; de veranderingen die in scène zijn gezet, enzovoort.

git status 

Git-faseveranderingen en commit

Voer vervolgens alle wijzigingen uit met behulp van het add-commando met de -A-schakelaar en voer de initiële commit uit. De vlag -a instrueert het commando om bestanden die zijn gewijzigd automatisch te stagen, en -m wordt gebruikt om een commit-bericht te specificeren:

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

Publiceer lokale commits naar een externe Git-repository

Als projectteamleider kunt u, nu u de projectstructuur heeft gemaakt, de wijzigingen naar de centrale opslagplaats publiceren met behulp van de push-opdracht, zoals weergegeven.

git push origin master

Op dit moment zou je lokale git-repository up-to-date moeten zijn met de centrale repository van het project (origin). Je kunt dit bevestigen door het statuscommando nogmaals uit te voeren.

git status

U kunt uw collega's ook laten weten dat ze aan het project moeten gaan werken door de repository naar hun lokale computers te klonen.

Maak een nieuwe Git-branch

Met vertakken kunt u aan een kenmerk van uw project werken of problemen snel oplossen zonder de codebase (master branch) aan te raken. Om een nieuw filiaal aan te maken en er vervolgens naartoe over te schakelen, gebruikt u respectievelijk de opdrachten branch en checkout.

git branch latest
git checkout latest

Als alternatief kunt u een nieuwe vestiging aanmaken en er in één stap naartoe overschakelen met behulp van het afrekencommando met de vlag -b.

git checkout -b latest

U kunt bijvoorbeeld ook een nieuwe tak aanmaken op basis van een andere tak.

git checkout -b latest master

Om te controleren in welke tak u zich bevindt, gebruikt u het takcommando (een sterretje geeft de actieve tak aan):

git branch

Nadat je de nieuwe branch hebt aangemaakt en er naar bent overgestapt, breng je er enkele wijzigingen onder aan en voer je enkele commits uit.

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

Voeg wijzigingen van de ene tak naar de andere samen

Om de wijzigingen onder de vertakkingstest samen te voegen in de hoofdvertakking, schakelt u over naar de hoofdvertakking en voert u de samenvoeging uit.

git checkout master 
git merge test 

Als u een bepaalde vertakking niet langer nodig heeft, kunt u deze verwijderen met de -d-schakelaar.

git branch -d test

Wijzigingen downloaden vanuit Remote Central Repository

Ervan uitgaande dat uw teamleden wijzigingen naar de centrale projectopslagplaats hebben gepusht, kunt u eventuele wijzigingen naar uw lokale exemplaar van het project downloaden met behulp van de pull-opdracht.

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

Inspecteer Git Repository en voer vergelijkingen uit

In deze laatste sectie zullen we enkele nuttige Git-functies bespreken die alle activiteiten bijhouden die in je repository hebben plaatsgevonden, waardoor je de projectgeschiedenis kunt bekijken.

De eerste functie is Git log, die commit-logs weergeeft:

git log

Een ander belangrijk kenmerk is het show commando dat verschillende soorten objecten weergeeft (zoals commits, tags, bomen etc.):

git show

De derde essentiële functie die u moet kennen is het diff-commando, dat wordt gebruikt om verschillen tussen branches te vergelijken of weer te geven, wijzigingen tussen de werkmap en de index weer te geven, wijzigingen tussen twee bestanden op schijf en nog veel meer.

Om bijvoorbeeld het verschil tussen de master en de nieuwste branch te laten zien, kunt u de volgende opdracht uitvoeren.

git diff master latest

Lees ook: 10 beste Git-alternatieven voor het hosten van open source-projecten

Samenvatting

Met Git kan een team van mensen samenwerken met behulp van dezelfde bestanden, terwijl de wijzigingen in de bestanden in de loop van de tijd worden vastgelegd, zodat ze zich later specifieke versies kunnen herinneren.

Op deze manier kun je Git gebruiken voor het beheren van broncode, configuratiebestanden of elk ander bestand dat op een computer is opgeslagen. Mogelijk wilt u de Git Online Documentatie raadplegen voor verdere documentatie.