Hoe een Git-repository volledig opnieuw in te stellen (inclusief niet-bijgehouden bestanden)

0
252

Git-commando's zijn ingewikkeld, en je merkt vaak dat je denkt: 'schroef dit, ik' 8217;begin gewoon opnieuw!” Gelukkig is Git gebouwd om elke versie van je wijzigingen bij te houden, en als je het verprutst hebt, biedt het tools om je repository terug te zetten naar de oude werkende staat.

Uw wijzigingen opslaan (Git Stash)

Voordat u een opdracht uitvoert om uw repository te resetten, moet u ervoor zorgen dat u geen gegevens verliest die u wilt opslaan.

Git biedt een paar verschillende soorten resets. Zachte en gemengde resets zullen de repository terugzetten naar de staat waarin het zich bevond bij een bepaalde commit (vaak de HEAD van een branch), maar zullen je lokale wijzigingen behouden die je nog niet hebt vastgelegd. Harde resets zijn daarentegen destructief en zullen wijzigingen weggooien die nog niet zijn doorgevoerd.

Vaak is een harde reset nodig om de repository goed op te schonen. Als je echter wilt, kun je “stash” uw wijzigingen, waarbij alle niet-vastgelegde wijzigingen worden overgenomen en lokaal worden opgeslagen. Je kunt de stash openen met “stash apply” op een later tijdstip.

git stash git stash apply

Je kunt ook een nieuwe branch maken, de wijzigingen committen en dan terug naar master resetten. Hierdoor blijven je wijzigingen voor altijd in de vastleggingsgeschiedenis en kunnen ze ook naar externe bronbeheer worden gestuurd om te worden gedeeld met je collega's.

Een reset uitvoeren ( Git Reset)

Eerst moet je de laatste staat van de externe repository ophalen, meestal “origin,” en check dan de master branch uit (of naar welke je ook gaat resetten).

git fetch origin git checkout master Advertisement

Je kunt ook uitchecken en resetten naar een individuele commit met behulp van zijn ID, bijv. git checkout 342c47a4.

Voer vervolgens een harde reset uit (tenzij je wijzigingen wilt behouden met een zachte reset). Houd er rekening mee dat deze bewerking destructief is voor niet-opgeslagen wijzigingen.

git reset –hard origin/master

Je kunt resetten naar een lokale commit in plaats van origin/master, maar de meeste de tijd dat u de afstandsbediening opnieuw instelt.

Niet-getrackte bestanden resetten (Git Clean)

Git reset is echter meestal niet genoeg. Resetten in Git reset alleen bestanden die daadwerkelijk door Git worden bijgehouden. Dit omvat code en bronnen die wijzigingen ontvangen.

Er zijn echter ook bestanden zoals pakketten, lokale configuratie, build-artefacten/output, logbestanden en andere tijdelijke items die niet zijn opgeslagen in de Git repository (en genegeerd in .gitignore). Om deze op te schonen en je lokale repo op 100% pariteit te brengen met de status van de afstandsbediening, kun je git clean uitvoeren:

git clean -d –force Advertisement

Je kunt deze opdracht daadwerkelijk uitvoeren zonder git reset uit te voeren, wat misschien wel is wat je wilt. Als je geen effect wilt hebben op je codebestanden, maar je builds, logs en pakketten wilt opschonen om opnieuw te beginnen, is git clean misschien alles wat je nodig hebt.

In plaats daarvan opgeven: een nieuwe repo klonen

Terwijl het bovenstaande de “schone manier” om het te doen met officiële Git-commando's, is het doen van een volledige reset niet ver verwijderd van gewoon je lokale repository-map te vernietigen en een geheel nieuwe te klonen. Het is geen schande om dat te doen als je toch van plan bent alles opnieuw in te stellen:

sudo rm -r git-repository git clone https://github.com/user/git-repository.git cd git-repository

Houd er rekening mee dat dit alleen kan worden teruggezet naar de staat van je externe repository, niet naar een lokale commit. Dit zal standaard de master branch klonen, maar je kunt overschakelen naar de branch van je keuze met git switch of het vanaf het begin klonen met git clone -b <branchname>.