Gafflar
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Visual Studio 2019 | Visual Studio 2022
Git-lagringsplatsens förgreningar är användbara när personer vill göra experimentella, riskfyllda eller dolda ändringar i en kodbas, men dessa ändringar måste isoleras från kodbasen på den ursprungliga lagringsplatsen. En ny förgrening är i princip en ny fjärrlagringsplats som delar källkoden för den ursprungliga lagringsplatsen.
Som en oberoende version döljs ändringar som du gör i din förgrening, till exempel att lägga till incheckningar eller grenar, från den ursprungliga lagringsplatsen. Om du vill sammanfoga dina codebase-ändringar till den ursprungliga lagringsplatsen måste du skapa en pull-begäran (PR) för att begära granskning och godkännande av dessa ändringar.
Förgreningsprocessen överför inte några behörigheter, principer eller bygg-pipelines från den ursprungliga lagringsplatsen till din förgrening.
Den här artikeln beskriver hur du arbetar med förgreningar i Git-lagringsplatser för Azure Repos och innehåller länkar till GitHub-innehåll som beskriver hur du hanterar förgreningar i GitHub-lagringsplatser.
I den här artikeln lär du dig hur du:
- Dela kod mellan förgreningar
- Välj mellan grenar och förgreningar
- Aktivera lagringsplatsens förgrening
- Skapa en förgrening
- Klona förgreningen lokalt
- Skicka lokala ändringar till din förgrening
- Skapa och slutföra en PR
- Synkronisera din förgrening
Krav för åtkomst till Azure-lagringsplatser
Lagringsplatser måste vara aktiverade i dina Azure DevOps-projektinställningar. Om lagringshubben och de associerade sidorna inte visas kan du läsa Aktivera eller inaktivera en Azure DevOps-tjänst till lagringsbara lagringsplatser.
Om du vill visa kod i privata projekt måste du vara medlem i ett Azure DevOps-projekt med grundläggande åtkomstnivå eller högre. För offentliga projekt kan alla visa koden.
Om du inte har ett projekt skapar du ett eller registrerar dig kostnadsfritt.
Om du inte är projektmedlem läggs du till.
Om du vill klona eller bidra till kod för ett privat projekt måste du vara medlem i säkerhetsgruppen Deltagare eller ha motsvarande behörigheter angivna. För offentliga projekt kan vem som helst klona och bidra med kod. Mer information finns i Vad är ett offentligt projekt?
Kommentar
För offentliga projekt har användare som beviljats intressentåtkomst fullständig åtkomst till Azure Repos.
Lagringsplatser måste vara aktiverade i dina Azure DevOps-projektinställningar. Om lagringshubben och de associerade sidorna inte visas kan du läsa Aktivera eller inaktivera en Azure DevOps-tjänst till lagringsbara lagringsplatser.
Om du vill visa kod måste du vara medlem i Azure DevOps-projektet med grundläggande åtkomst eller högre. Om du inte är projektmedlem läggs du till.
Om du vill klona eller bidra till kod måste du vara medlem i säkerhetsgruppen Deltagare eller ha motsvarande behörigheter i det projekt som du vill ändra.
Dela kod mellan förgreningar
Den ursprungliga lagringsplatsen kallas ofta för den överordnade lagringsplatsen. Du kan skapa PR:er för att sammanfoga ändringar i endera riktningen: från förgrening till uppströms eller uppströms till förgrening. Den vanligaste riktningen är från förgrening till uppströms. Målrepoens behörigheter, principer, byggen och arbetsobjekt gäller för PR.
Välj mellan grenar och förgreningar
För ett litet team med 2–5 utvecklare kanske ett förgreningsarbetsflöde inte är nödvändigt eftersom alla kan arbeta i funktionsgrenar och grenprinciper kan skydda standardgrenen. Men om ditt team expanderar och växer ut det här arrangemanget kan de växla till ett förgreningsarbetsflöde.
Om lagringsplatsen har ett stort antal tillfälliga eller ovanliga incheckningar, till exempel ett öppen källkod projekt, rekommenderar vi förgreningsarbetsflödet. Vanligtvis bör endast kärndeltagare i projektet ha direkt incheckningsrättigheter till din ursprungliga lagringsplats. Andra medarbetare bör använda ett förgreningsarbetsflöde för att isolera sina föreslagna ändringar tills kärndelgivarna har möjlighet att granska sitt arbete.
Aktivera lagringsplatsens förgrening
Information om hur du aktiverar förgreningar för en Git-lagringsplats för Azure Repos finns i aktivera förgreningar.
Information om hur du aktiverar förgreningar för en GitHub-lagringsplats finns i Hantera förgreningsprincipen för din organisation.
Arbetsflödet för förgrening
Förgreningsarbetsflödet består av fem steg som beskrivs i följande avsnitt.
- Skapa en förgrening
- Klona din förgrening lokalt
- Skicka lokala ändringar till din förgrening
- Skapa och slutföra en PR
- Synkronisera din förgrening
Skapa en förgrening
Följande steg beskriver hur du förgrenar en Azure Repos Git-lagringsplats.
Kommentar
Om du vill förgrena en lagringsplats i ett Azure DevOps-projekt måste du ha behörigheten Skapa lagringsplats för projektet. Lagringsplatsägare bör överväga att skapa ett dedikerat projekt för gafflar och tilldela behörigheten Skapa lagringsplats till alla deltagare. Mer information om hur du anger behörigheter finns i Ange Behörigheter för Git-lagringsplats.
Från webbläsaren går du till git-lagringsplatsen för Azure Repos som du vill förgrena. Välj LagringsplatsFiler > och välj sedan Förgrening på ellipsmenyn för att öppna dialogrutan Förgrening.
I dialogrutan Förgrening namnger du den förgrenade lagringsplatsen, väljer det projekt där du vill att förgreningen ska skapas, väljer de grenar som ska inkluderas i förgreningen och väljer sedan Förgrening. Du kan ange om förgreningen ska innehålla alla grenar eller bara standardgrenen. Om lagringsplatsen innehåller flera ämnesgrenar bör du bara överväga att inkludera standardgrenen i din förgrening.
Information om hur du förgrenar en GitHub-lagringsplats finns i Förgrena en lagringsplats.
Klona förgreningen lokalt
När du har förgrenat en lagringsplats klonar du din förgrening för att skapa en lokal kopia i en mapp på datorn. Du kan klona från kommandoraden eller med hjälp av en IDE som Visual Studio. Mer information om hur du klonar en lagringsplats finns i Klona en befintlig Git-lagringsplats.
När du klonar en fjärransluten lagringsplats tilldelar Git aliaset origin
som en förkortning för URL:en för den fjärranslutna lagringsplats som du klonade. För enkelhetens skull lägger du till ytterligare ett alias med namnet upstream
för den lagringsplats som du förgrenade från, vilket kallas den överordnade lagringsplatsen. Följande steg beskriver hur du lägger till ett upstream
alias.
Dricks
För enkelhetens skull kan du använda aliasen origin
och upstream
i stället för motsvarande URL:er i dina Git-kommandon.
Följ dessa steg för att lägga till ett upstream
alias i Visual Studio:
Välj Verktygsalternativ > i menyraden för att öppna fönstret Alternativ. Välj Källkontroll > Git-lagringsplatsinställningar > Fjärranslutningar och välj sedan Lägg till för att öppna dialogrutan Lägg till fjärrlagringsplats .
I dialogrutan Lägg till fjärranslutning lägger du till en ny fjärranslutning med namnet
upstream
och anger Git-klonings-URL:en för lagringsplatsen som du förgrenade. Välj sedan Spara.
Skicka lokala ändringar till din förgrening
När du förgrenar skapar du en personlig version av den ursprungliga lagringsplatsen (den ursprungliga lagringsplatsen kallas "uppströms"). Förgrening är oberoende av uppströms, men förgrening delar koden och behåller en länk till uppströms, vilket möjliggör framtida synkronisering. Därför finns det inget som hindrar dig från att arbeta direkt i grenen av den main
lokala klonen och sedan push-överföra det arbetet till grenen main
av din förgrening. Det är dock i allmänhet bättre att använda funktionsgrenar för ditt arbete. Med hjälp av funktionsgrenar:
Du kan underhålla flera oberoende arbetsströmmar samtidigt.
Du gör det enklare för andra att förstå det arbete du delar eftersom det arbetet är organiserat i olika arbetsströmmar per gren.
Ett vanligt Git-arbetsflöde innehåller följande steg:
Skapa en lokal funktion eller en felkorrigeringsgren.
Gör ändringar i den nya grenen och genomför ditt arbete. Vanligtvis gör personer flera incheckningar när de arbetar med en funktion eller buggkorrigering.
Skicka funktionen eller felkorrigeringsgrenen till din förgrening. Din förgrening har aliaset
origin
.
Information om hur du push-överför ändringarna finns i Dela kod med push-överföring.
Skapa och slutföra en PR
Om du vill sammanfoga de ändringar som du överförde till din förgrening i Azure Repos kan du:
Skapa en PR för att begära granskning och godkännande av dina ändringar. När du öppnar en PR anger du PR-källgrenen till funktionen eller bugfix-grenen i din förgrening. PR-målgrenen är vanligtvis den
main
gren av lagringsplatsen som du förgrenade. Lagringsplatsen kallas för den överordnade lagringsplatsen och har aliasetupstream
.Följande skärmbild visar källlagringsplatsen och -grenen samt mållagringsplatsen och grenen för en PR som skapats i Azure Repos.
Mer information om hur du skapar en PR med din webbläsare, Visual Studio eller Azure DevOps CLI finns i Skapa en PR.
Viktigt!
Alla med läsbehörigheten på den överordnade lagringsplatsen kan öppna en PR för den. Om den överordnade lagringsplatsen har en PR-bygg-pipeline som är konfigurerad för att köras när PR skapas, körs en version på de ändringar som introduceras av din PR.
För att din pr ska kunna slutföras måste alla nödvändiga granskare godkänna PR-ändringarna och alla målgrensprinciper måste uppfyllas. Vid PR-godkännande och slutförande sammanfogas ändringarna i PR-källgrenen till PR-målgrenen.
Information om hur du skapar och slutför en GitHub-PR finns i Skapa en pull-begäran och Slå samman en pull-begäran.
Synkronisera din förgrening
När en PR har sammanfogat ändringarna från din förgrening till målgrenen för den överordnade lagringsplatsen kan du hämta från målgrenen för den överordnade lagringsplatsen för att uppdatera motsvarande lokala gren med både dina ändringar och eventuella ändringar som gjorts av andra deltagare. Då är du redo att:
Skapa en ny funktion eller en felkorrigeringsgren från den uppdaterade lokala grenen.
Uppdatera din förgrening genom att skicka från din uppdaterade lokala gren till
origin
.
Vanligtvis är main
målgrenen för den överordnade lagringsplatsen . Om du inte redigerar din lokala main
gren direkt (du arbetar i funktionsgrenar) uppdateras din lokala main
gren utan sammanslagningskonflikter om du hämtar från den överordnade grenenupstream/main
.