Rebasing
Rebasen stelt je in staat om wijzigingen van de ene branch in een andere branch op te nemen door de commit-historie aan te passen. Het herhaalt de commits van de source branch naar de target branch. Dit resulteert in een schonere en meer lineaire commit-geschiedenis.
Voorbeeld: Laten we zeggen dat je een feature branch hebt aangeroepen feature-branch
en dat je de laatste wijzigingen van de branch wilt opnemen main
. U kunt de volgende opdracht gebruiken:
git checkout feature-branch
git rebase main
Dit zal de commits van de main
branch toepassen op de feature-branch
. Eventuele conflicten moeten tijdens het rebaseproces worden opgelost.
Stashing
Met stashing kunt u uw huidige wijzigingen, die nog niet klaar zijn om te worden vastgelegd, opslaan en tijdelijk teruggaan naar een schone werkdirectory. Dit is handig wanneer u naar een andere branch moet overschakelen of aan een andere feature moet werken zonder de wijzigingen waar u momenteel aan werkt vast te leggen.
Voorbeeld: Laten we zeggen dat je aan een feature branch werkt en je hebt enkele wijzigingen aangebracht, maar je moet overschakelen naar een andere branch. U kunt de volgende opdrachten gebruiken om uw wijzigingen te stashen:
git stash
Nadat u naar de nieuwe branch bent overgeschakeld, kunt u de stashed wijzigingen toepassen met behulp van:
git stash apply
Git Hooks
Git Hooks
zijn scripts die worden getriggerd door specifieke Git-gebeurtenissen, zoals pre-commit, post-commit, pre-push, etc. Hiermee kun je bepaalde acties automatiseren of specifieke regels in je workflow afdwingen.
Voorbeeld: Stel dat u een linter op uw code wilt uitvoeren voordat u een commit uitvoert. U kunt een pre-commit hook-script maken dat de linter activeert en de commit voorkomt als er linting-fouten zijn.
Git Submodule
Git Submodule
kunt u een andere Git-repository opnemen als een subdirectory binnen uw hoofdrepository. Dit is handig als u een project hebt dat afhankelijk is van externe bibliotheken of componenten.
Voorbeeld: u heeft een project waarvoor een specifieke bibliotheek nodig is. In plaats van de code van de bibliotheek in uw repository te dupliceren, kunt u deze toevoegen als een submodule. Op deze manier kunt u de bibliotheekcode gescheiden houden en eenvoudig bijwerken wanneer dat nodig is.
Git Revert and Git Reset
Git Revert
maakt een eerdere commit ongedaan door een nieuwe commit te maken die de wijzigingen in de originele commit ongedaan maakt. Git Reset
, aan de andere kant, stelt je in staat om de branch pointer naar een andere commit te verplaatsen, waardoor je effectief commits uit de commit geschiedenis verwijdert.
Voorbeeld: Als je de laatste commit ongedaan wilt maken, kun je gebruiken git revert HEAD
om een nieuwe commit te maken die de wijzigingen ongedaan maakt die gemaakt zijn in de laatste commit. Als je de laatste commit volledig wilt weggooien, kun je gebruiken git reset HEAD~1
om de branch pointer één commit terug te zetten.
Deze geavanceerde concepten in Git bieden krachtige mogelijkheden om uw repository effectief te beheren. Begrijpen hoe je ze moet gebruiken en wanneer je ze moet toepassen, zal je Git-workflow en projectbeheer aanzienlijk verbeteren.