Vanliga frågor och svar om Git

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

Hur kan jag enkelt hämta en fjärrgren till min lokala lagringsplats?

Kontrollera först att du har en origin konfigurerad lagringsplats. Du bör ha en sådan lagringsplats om du klonade ) lagringsplatsen git clone. När du checkar ut en gren som inte finns lokalt avgör Git om det finns en fjärrgren med samma namn. I så fall skapar Git en lokal gren med en referens till fjärrgrenen för det namnet. Använd git pull för att ladda ned incheckningarna och få Git att komma ikapp med grenhistoriken lokalt.

Hur tar jag reda på vilken gren jag arbetar i?

git branch utan argument visar de lokala grenarna och markerar de som du har checkat ut. I Visual Studio visar statusfältet även den aktuella grenen när du arbetar med ett projekt som lagras på en lokal Git-lagringsplats.

När ska jag göra Git-incheckningar?

Den godkända metoden är att göra separata incheckningar för logiskt separata ändringar. Tänk på incheckningar som poster i en loggbok. När du gör en ändring som är värd att notera registrerar du den i en incheckning. Ett populärt alternativ är att låta alla checka in lokalt så mycket de vill, men innan de pushar de lokala incheckningarna krossar de dem först genom rebasing. Det här alternativet ger användarna flexibilitet att göra frekventa incheckningar, samtidigt som incheckningshistoriken effektiviseras.

Om varje gren behåller sin fullständiga incheckningshistorik, gör inte det incheckningshistoriken för *main* svår att följa över tid?

Stora projekt med många incheckningar och en rad deltagare kan resultera i incheckningshistorik för grenen main som representerar utvecklingshistoriken för ämnesgrenarna som sammanfogats till main mer än utvecklingshistoriken för det övergripande projektet. Git tillhandahåller en funktion för att komprimera incheckningar på grenar genom att krossa incheckningar och ombasera. När du mosar incheckningar blir incheckningshistoriken på en gren mindre utförlig, vilket ger en enklare incheckningshistorik på huvudgrenen när den har sammanfogats.

Hur kan jag ta reda på vem som gjorde en specifik ändring i en fil?

git blame Använd kommandot för att ta reda på vem som gjorde en viss ändring i en fil. Från din lokala lagringsplats kan du köra git blame med parametern -L och ange vilka intresserader. Blame genererar formaterade utdata som visar incheckningen som senast uppdaterade raden och namnet på den person som gjorde incheckningen.

> git blame foo.js -L 20,+40  # show the blame output for the next 40 lines starting at line 20

215d1108 (Francis Totten 2015-11-21 09:54:23 -0800 20) line 20 of the code
215d1108 (Francis Totten 2015-11-21 09:54:23 -0800 21) line 21 of the code
215d1108 (Francis Totten 2015-11-21 09:54:23 -0800 22) line 22 of the code

Blame söker i incheckningshistoriken åt dig. Du kan också granska en fils historik i webbportalen för att avgöra vem som gjorde en ändring och när. Öppna Code Explorer för din lagringsplats och gren och välj sedan filen av intresse. Azure Repos visar en fullständig incheckningshistorik för filen på den aktuella grenen.

Jag har gjort ändringar i vissa filer och nu kan jag inte checka ut till en annan gren eller ombasera mitt arbete.

Om du checkar ut till en annan gren i Git påverkas tillståndet för filer i filsystemet. Git använder incheckningshistoriken för att se till att du arbetar med de filer som representerar tillståndet för din gren. Om du försöker ändra grenar medan du har icke-bakåtkompatibla ändringar skrivs dessa ändringar över under utcheckningen. Eftersom Git inte vill att du av misstag ska förlora dina ändringar förhindrar det att utcheckningen sker. Du har två alternativ:

Jag har gjort lite arbete men måste byta till något annat. Hur kan jag spara mitt arbete för senare utan att genomföra ändringarna?

Ibland vill du behålla ändringarna, men inte checka in dem eftersom de inte är i en punkt där du är bekväm med att göra det. Använd Git stash. Stash tar de aktuella mellanlagrade och otaglade ändringarna i din gren och sparar arbetet och returnerar sedan grenen tillbaka till tillståndet för den senaste incheckningen. Du kan ändra till den andra grenen, göra ditt arbete och sedan när du återgår till den här grenkörningen stash apply för att återställa dina ändringar.

> git stash
Saved working directory and index state WIP on feature1: be26067 updated endpoint docs
HEAD is now at be26067

När du kör git stash applytillämpas de senast undangömda ändringarna på din aktuella gren. Om det finns en konflikt som tillämpar de undangömda ändringarna stash återställs ändringarna för de filer som inte står i konflikt och skapar konfliktmarkörer i de filer som är i konflikt som du kan lösa. Du bör sammanfoga ändringarna manuellt i det här fallet.

När du är klar med stashen tar du bort den med git stash drop det här kommandot tar bort den sista uppsättningen med undangömda ändringar.

Du kan ha flera häften, men om du gör det krävs mer manuell manipulering eftersom du uttryckligen måste tillämpa och släppa häften. Läs mer i Git Stash-dokumentationen.

Hur ändrar jag standardredigeraren för Git-kommandoradsverktyg?

Som standard använder kommandorads-Git en kommandoradsredigerare när du ber om incheckningsmeddelanden, utför ombaser och annat arbete som kräver ytterligare information för att slutföra. Standardredigeraren konfigureras med :git config

> git config core.editor _path_to_editor_ _options_to_editor_

Git för Windows gör det enkelt att ange anteckningar som redigeringsprogram:

> git config core.editor notepad

Det här kommandot konfigurerar Windows Anteckningar för att redigera Git-information efter behov och korrekt skicka igenom texten från Git till Anteckningar. Du kan också ange

> git config format.commitMessageColumns 72 

För att behålla textkolumnerna i incheckningsmeddelandena till önskad 72 och radbrytning efter att ha nått den teckengränsen på en rad.

Hur ändrar jag användarnamnet och e-postmeddelandet som visas i mina incheckningar?

Git placerar användarnamn och e-postadressinformation i varje incheckning, och Azure Repos använder den här informationen när du visar incheckningar och när du arbetar med pull-begäranden. Om du arbetar på kommandoraden kan du uppdatera namn- och e-postinformationen git config som visas med kommandot :

> git config --global user.email "frank@fabrikam.com"
> git config --global user.name "Francis Totten"

Alternativet --global anger e-post och namn som ingår i incheckningar för alla Git-lagringsplatser i det här systemet. Om du vill ändra inställningarna för en enskild lagringsplats måste du ändra till katalogen där Git-lagringsplatsen finns och köra ovanstående kommandon utan --global flaggan.

Du kan också ändra namn- och e-postinställningarna från Visual Studio. På Git-menyn väljer du Inställningar I dialogrutan Alternativ väljer du Git Global Inställningar eller Git-lagringsplats Inställningar> Allmänt.

Visual Studio 2019 version 16.8 och senare versioner ger en Git-versionskontroll samtidigt som du underhåller Git-användargränssnittet för Team Explorer . Om du vill använda Team Explorer avmarkerar du Verktyg>Alternativ>Förhandsgranskning Funktioner>Ny Git-användarupplevelse från menyraden. Du kan använda Git-funktioner från något av gränssnitten på ett och samma sätt.

I Team Explorer väljer du Inställningar och under Git väljer du länken Global Inställningar eller Lagringsplats Inställningar.