Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Visual Studio 2019 | Visual Studio 2022
Git onderhoudt automatisch een geschiedenis van ontwikkeling op een branch door elke nieuwe commit te koppelen aan zijn voorganger. Wanneer u de ene vertakking in een andere vertakking samenvoegt , kan de geschiedenis minder eenvoudig worden. Een no-fast-forward merge combineert bijvoorbeeld uiteenlopende ontwikkelingslijnen door een samenvoegcommit met meerdere voorgangers te maken. Omgekeerd combineert een Git-rebase uiteenlopende ontwikkellijnen zonder een samenvoegingsdoorvoering te maken, wat resulteert in een eenvoudigere doorvoergeschiedenis, maar informatie over de samenvoeging verliest. Uw keuze voor het samenvoegingstype wordt waarschijnlijk beïnvloed door of u een record van de samenvoeging wilt behouden of de doorvoergeschiedenis wilt vereenvoudigen.
In dit artikel wordt besproken wanneer u een nieuwe basis gebruikt in plaats van een snelle samenvoeging en procedures biedt voor de volgende taken:
- Herbaseer uw lokale branch
- Uw lokale vertakking geforceerd pushen na een herbase
- Interactieve rebase om lokale doorvoeringen te squashen
Voor een overzicht van de Git-werkstroom, zie de Azure Repos Git-handleiding.
Vereiste voorwaarden
Categorie | Vereisten |
---|---|
Toegang tot het project | Lid van een project. |
toestemmingen | - Code weergeven in privéprojecten: ten minste Basic toegang. - Klonen of bijdragen aan code in privéprojecten: Lid van de Inzenders beveiligingsgroep of bijbehorende machtigingen in het project. - Machtigingen voor tak of opslagplaats instellen: Machtigingen beheren machtigingen voor de tak of opslagplaats. - Standaardtak wijzigen: beleid bewerken machtigingen voor de opslagplaats. - Een opslagplaats importeren: Lid van de Projectbeheerders beveiligingsgroep of Git-projectniveau Opslagplaats maken machtiging ingesteld op Toestaan. Zie Machtigingen voor Git-opslagplaatsen instellen voor meer informatie. |
Services | Repositories ingeschakeld. |
Gereedschappen | Facultatief. Gebruik az repos opdrachten: Azure DevOps CLI. |
Opmerking
In openbare projecten hebben gebruikers met Stakeholder volledige toegang tot Azure Repos, waaronder het weergeven, klonen en bijdragen aan code.
Categorie | Vereisten |
---|---|
Toegang tot het project | Lid van een project. |
toestemmingen | - Code weergeven: ten minste Basis toegang. - Klonen of bijdragen aan code: Lid van de beveiligingsgroep Contributors of bijbehorende machtigingen in het project. |
Services | Repositories ingeschakeld. |
Uw lokale vertakking opnieuw baseeren
Git rebase integreert doorvoeringen vanuit een bronvertakking in uw huidige lokale vertakking (doelvertakking). De bronvertakking blijft ongewijzigd. Ter vergelijking worden Git-rebase en andere samenvoegtypen weergegeven in het volgende diagram.
Git rebase herstelt de volgorde van de doorvoeringen in de doelvertakking, zodat deze alle doorvoeringen van de bronvertakking bevat, gevolgd door alle doorvoeringen van de doelvertakking sinds de laatste gemeenschappelijke doorvoering. Een andere manier om het weer te geven, is dat een rebase de wijzigingen in uw doelvertakking opnieuw afspeelt boven op de geschiedenis van de bronvertakking. Git rebase wijzigt met name de volgorde van de bestaande commits in de doelvertakking, wat niet het geval is bij de andere samenvoegstrategieën. In het voorgaande diagram bevat doorvoer K dezelfde wijzigingen als K, maar heeft een nieuwe doorvoer-id omdat deze wordt gekoppeld aan doorvoeren E in plaats van C.
Als een bronvertakkingswijziging conflicteert met een doelvertakkingswijziging, wordt u door Git gevraagd om het samenvoegingsconflict op te lossen. U kunt samenvoegingsconflicten tijdens een rebase op dezelfde manier oplossen als u samenvoegingsconflicten tijdens een merge oplost.
Rebase versus geen-snelle-doorvoer samenvoeging
Git-rebasing resulteert in een eenvoudigere maar minder exacte doorvoergeschiedenis dan een niet-snelle samenvoeging, ook wel een drierichtings - of echte samenvoeging genoemd. Als u een record van een samenvoeging in de doorvoergeschiedenis wilt, gebruikt u een niet-snelle samenvoeging.
Als u de enige persoon bent die aan een functie- of bugfixvertakking werkt, kunt u overwegen een rebase te gebruiken om regelmatig recente main
vertakkingen erin te integreren. Deze strategie helpt ervoor te zorgen dat u op de hoogte blijft van recent werk door anderen en onmiddellijk samenvoegingsconflicten oplost die zich voordoen. Door de basis te herstellen implementeert u uw nieuwe functie boven op het meest recente main
vertakkingswerk, waarmee u een lineaire doorvoergeschiedenis kunt onderhouden.
Zie Rebase vs merge voor meer informatie over Git-rebase en wanneer u deze wilt gebruiken.
Richtlijnen voor Rebase en Force-Push
Als u een lokale vertakking waarop u eerder een rebase hebt uitgevoerd opnieuw probeert te pushen met de standaard Git-pushopdracht, zal de push niet slagen. Met de standaard-Git-pushopdracht wordt een snelle samenvoegbewerking toegepast om uw lokale vertakking te integreren in de externe vertakking. Deze opdracht zal falen na een rebase omdat de rebase de volgorde van bestaande commits in uw lokale doelvertakking wijzigt, waardoor deze niet langer overeenkomt met de geschiedenis van zijn externe tegenhanger. In dit scenario slaagt een geforceerde push door de externe vertakking te overschrijven.
Git rebase en force push zijn krachtige hulpprogramma's, maar houd rekening met deze richtlijnen bij het bepalen of ze moeten worden gebruikt:
- Herbaseer geen lokale vertakking die met anderen is gedeeld en gepusht, tenzij u zeker weet dat niemand de gedeelde vertakking gebruikt. Na een rebase komt uw lokale branch niet meer overeen met de geschiedenis van de externe branch.
- Voer geen force push uit naar een externe vertakking die door anderen wordt gebruikt, omdat hun lokale versie van die externe vertakking niet langer overeenkomt met de aangepaste geschiedenis van de externe vertakking.
- Uw team moet overeenstemming bereiken over de gebruiksscenario's voor rebase en geforceerde push.
Hint
Voor een gezamenlijk beoordelingsproces gebruikt u een pull request om nieuw werk te mergen in de hoofdvertakking van een remote repo.
De basis opnieuw instellen
- Visual Studio 2022
- Visual Studio 2019 - Git-menu
- Visual Studio 2019 - Team Explorer
- Git-opdrachtregel
Visual Studio 2022 biedt een Git-versiebeheer met behulp van het Git-menu, Git-wijzigingen en via contextmenu's in Solution Explorer. Visual Studio 2019 versie 16.8 biedt ook de Git-gebruikersinterface van Team Explorer . Zie het tabblad Visual Studio 2019 - Team Explorer voor meer informatie.
Kies Git > Manage Branches om het venster Git-opslagplaats te openen.
Klik in het venster Git-opslagplaats met de rechtermuisknop op de doelvertakking en selecteer Uitchecken.
Klik met de rechtermuisknop op de bronvertakking en selecteer Rebase-doelvertakking <> op <de bronvertakking>.
Visual Studio geeft een bevestigingsbericht weer na een geslaagde herbase.
Als de rebase is gestopt vanwege samenvoegingsconflicten, ontvangt u een melding van Visual Studio. U kunt de conflicten oplossen of de rebase annuleren en terugkeren naar de status van de pre-rebase.
Uw lokale tak forceren te pushen na een rebase
Als u een lokale tak hebt teruggezet die u eerder hebt gepusht, zal een volgende standaard-Git-push mislukken. In plaats daarvan kunt u een geforceerde push doen van uw lokale vertakking om de externe tegenhanger te overschrijven, zodat hun commit-geschiedenissen overeenkomen.
Waarschuwing
Push nooit een vertakking waaraan anderen werken. Zie Rebase en pushrichtlijnen afdwingen voor meer informatie.
Als u push wilt afdwingen in Visual Studio, moet u eerst de optie voor geforceerde push inschakelen:
Ga naar Opties voor hulpprogramma's>>broncodebeheer>algemene git-instellingen.
Selecteer de optie Push --force-with-lease inschakelen .
De Git-pushvlag --force-with-lease
is veiliger dan de --force
vlag, omdat deze geen externe vertakking overschrijft die doorvoeringen bevat die niet zijn geïntegreerd in de lokale vertakking die u geforceerd pusht.
- Visual Studio 2022
- Visual Studio 2019 - Git-menu
- Visual Studio 2019 - Team Explorer
- Git-opdrachtregel
Selecteer in het venster Git-wijzigingen de drukknop om uw doorvoer te pushen.
U kunt ook Push selecteren in het Git-menu .
Als de standaard-Git-pushbewerking mislukt, start Visual Studio het dialoogvenster Git-Push mislukt . Kies Geforceerd pushen.
Visual Studio geeft een bevestigingsbericht weer na een geslaagde push.
Interactieve rebase om lokale doorvoeringen te squashen
Normaal gesproken maakt u tijdens het werken aan een nieuw kenmerk in uw lokale feature-branch meerdere commits. Wanneer u klaar bent om de nieuwe functie te publiceren, kunt u deze doorvoeringen samenvoegen tot één doorvoering om de doorvoergeschiedenis te vereenvoudigen. U kunt een interactieve rebase gebruiken om meerdere commits samen te squashen tot één commit.
- Visual Studio 2022
- Visual Studio 2019 - Git-menu
- Visual Studio 2019 - Team Explorer
- Git-opdrachtregel
Visual Studio 2022 biedt geen ondersteuning voor interactieve rebasing. Gebruik in plaats daarvan de Git-opdrachtregel.
Opmerking
Azure DevOps-gebruikers kunnen squash samenvoegen om de commitgeschiedenis van een onderwerptak tijdens een pull-verzoek te comprimeren.