Close

git add

Wanneer je in Git of andere versiebeheersystemen werkt, is het concept van 'opslaan' een genuanceerder proces dan opslaan in een tekstverwerker of andere traditionele toepassingen voor bestandsbewerking. De traditionele softwareuitdrukking 'opslaan' is synoniem met de Git-term 'committen'. Een commit is het Git-equivalent van 'opslaan'. Traditioneel opslaan moet worden gezien als een bewerking in het bestandssysteem die wordt gebruikt om een bestaand bestand te overschrijven of een nieuw bestand te schrijven. Een Git-commit is echter een bewerking die werkt op een verzameling bestanden en mappen.

Het opslaan van wijzigingen in Git versus SVN is ook een ander proces. SVN Commits of 'check-ins' zijn handelingen waarbij op afstand naar een gecentraliseerde server wordt gepusht. Dit betekent dat een SVN-commit internettoegang nodig heeft om projectwijzigingen volledig te kunnen 'opslaan'. Git-commits kunnen lokaal worden vastgelegd en opgebouwd, en vervolgens naar een externe server worden gepusht met de opdracht git push -u origin main. Het verschil tussen de twee methoden is een fundamenteel verschil tussen de architectuurontwerpen. Git is een gedistribueerd toepassingsmodel, terwijl SVN een gecentraliseerd model is. Gedistribueerde toepassingen zijn over het algemeen robuuster omdat ze geen enkelvoudig foutpunt hebben zoals een gecentraliseerde server.

De opdrachten git add, git status en git commit worden allemaal in combinatie gebruikt om een momentopname van de huidige status van een Git-project op te slaan.

Git heeft een extra opslagmechanisme genaamd de 'stash'. De stash is een tijdelijke opslagruimte voor veranderingen die nog niet klaar zijn om te worden gecommit. De stash werkt binnen de werkmap, de eerste van de drie bomen, en heeft uitgebreide gebruiksopties. Ga voor meer informatie naar de pagina git stash.

Een Git-repository kan zo worden geconfigureerd dat bepaalde bestanden of mappen worden genegeerd. Dit voorkomt dat Git wijzigingen opslaat in genegeerde inhoud. Git heeft meerdere configuratiemethoden om de negeerlijst te beheren. De configuratie van git ignore wordt nader besproken op de pagina git ignore.


git add


De opdracht git add voegt een wijziging in de werkmap toe aan het staginggebied. Deze geeft bij Git aan dat je updates voor een bepaald bestand wilt opnemen in de volgende commit. git add heeft echter geen noemenswaardige invloed op de repository. Wijzigingen worden pas echt geregistreerd als je git commit uitvoert.

In combinatie met deze opdrachten heb je ook de git status nodig om de status van de werkmap en het staginggebied te bekijken.

Hoe het werkt


De opdrachten git add en git commit vormen de fundamentele Git-workflow. Dit zijn de twee opdrachten die elke Git-gebruiker moet begrijpen, ongeacht het samenwerkingsmodel van zijn team. Ze zijn het middel om versies van een project op te nemen in de geschiedenis van de repository.

De ontwikkeling van een project draait om het basispatroon van bewerken/stagen/committen. Eerst bewerk je je bestanden in de werkmap. Wanneer je klaar bent om een kopie van de huidige status van het project op te slaan, voer je de wijzigingen door met git add. Wanneer je tevreden bent met de gestagede momentopname, leg je die vast in de projectgeschiedenis met git commit. De opdracht git reset wordt gebruikt om een commit of gestagede momentopname ongedaan te maken.

Naast git add en git commit is een derde opdracht git push essentieel voor een volledig samenwerkende Git-workflow. git push wordt gebruikt om de gecommitte wijzigingen naar externe repository's te sturen voor samenwerking. Dit geeft andere teamleden toegang tot een set opgeslagen wijzigingen.

Git add momentopname
Git-branch
gerelateerd materiaal

Git-branch

Logo Bitbucket
Oplossing bekijken

Git leren met Bitbucket Cloud

De opdracht git add mag niet verward worden met svn add, waarmee een bestand aan de repository wordt toegevoegd. In plaats daarvan werkt git add op het meer abstracte niveau van veranderingen. Dit betekent dat git add elke keer dat je een bestand wijzigt moet worden aangeroepen, terwijl svn add maar één keer hoeft te worden aangeroepen voor elk bestand. Het klinkt misschien overbodig, maar deze workflow maakt het veel envoudiger om een project goed georganiseerd te houden.

Het staginggebied


De primaire functie van de opdracht git add is om openstaande wijzigingen in de werkmap te promoten naar het git staging-gebied. Het staginggebied is een van de meer unieke functies van Git, en het kan even duren voordat je het helemaal snapt als je een SVN-achtergrond (of zelfs een Mercurial-achtergrond) hebt. Het helpt om het te zien als een buffer tussen de werkmap en de projectgeschiedenis. Het staginggebied wordt beschouwd als een van de 'drie structuren' van Git, samen met de werkmap en de commit-geschiedenis.

In plaats van alle wijzigingen die je sinds de laatste commit hebt aangebracht vast te leggen, kun je tijdens de stage gerelateerde wijzigingen groeperen in zeer gerichte momentopnamen voordat je ze daadwerkelijk in de projectgeschiedenis commit. Dit betekent dat je allerlei bewerkingen kunt aanbrengen in niet-gerelateerde bestanden, vervolgens kunt teruggaan en ze kunt opsplitsen in logische commits door gerelateerde wijzigingen aan de stage toe te voegen en ze stuk voor stuk te committen. Zoals in elk revisiebeheersysteem is het belangrijk om atomaire commits aan te maken, zodat het eenvoudig is om bugs op te sporen en wijzigingen terug te draaien met minimale gevolgen voor de rest van het project.

Gemeenschappelijke opties


git add <file>

Stage alle wijzigingen in <file> voor de volgende commit.

git add <directory>

Stage alle wijzigingen in de <directory> voor de volgende commit.

git add -p

Begin een interactieve stagingsessie waarin je delen van een bestand kunt kiezen voor toevoeging aan de volgende commit. Hierbij krijg je een segment met wijzigingen gepresenteerd en wordt je gevraagd om een opdracht. Gebruik y om het segment te stagen, n om het segment te negeren, s om het in kleinere segmenten te splitsen, e om het segment handmatig te bewerken en q om af te sluiten.

Voorbeelden


Wanneer je een nieuw project start, heeft git add dezelfde functie als svn import. Gebruik de volgende twee opdrachten om een eerste commit van de huidige map aan te maken:

git add .
git commit

Als je eenmaal klaar bent met je project, kun je nieuwe bestanden toevoegen door het pad aan git add door te geven:

git add hello.py
git commit

Bovenstaande opdrachten kunnen ook worden gebruikt om wijzigingen in bestaande bestanden vast te leggen. Nogmaals, Git maakt geen onderscheid tussen stagingwijzigingen in nieuwe bestanden en wijzigingen in bestanden die al zijn toegevoegd aan de repository.

Samenvatting


Terugkijkend is git add de eerste opdracht in een keten bewerkingen die Git opdracht geeft om een momentopname van de huidige projectstatus 'op te slaan' in de commit-geschiedenis. Bij gebruik op zichzelf, promoot git add openstaande wijzigingen van de werkmap naar het staginggebied. De opdracht git status wordt gebruikt om de huidige status van de repository te onderzoeken en kan worden gebruikt om een git add-promotie te bevestigen. De opdracht git reset wordt gebruikt om een git add ongedaan te maken. De opdracht git commit wordt vervolgens gebruikt om een momentopname van de stagingmap toe te voegen aan de commit-geschiedenis van de repository's.


Deel dit artikel
Volgend onderwerp

Aanbevolen artikelen

Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.

Mensen die samenwerken met een muur vol tools

Bitbucket-blog

Toelichting DevOps

DevOps-leertraject

Demo Den Feature-demo's met Atlassian-experts

Hoe Bitbucket Cloud werkt met Atlassian Open DevOps

Meld je aan voor onze DevOps-nieuwsbrief

Thank you for signing up