Ignorera filändringar med Git

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

Visual Studio 2019 | Visual Studio 2022

Git bör inte spåra alla filer i projektet. Temporära filer från utvecklingsmiljön, testutdata och loggar är alla exempel på filer som förmodligen inte behöver spåras.

Du kan använda olika mekanismer för att låta Git veta vilka filer i projektet som inte ska spåras och för att säkerställa att Git inte rapporterar ändringar i filerna. För filer som Git inte spårar kan du använda en .gitignore eller exclude -fil. För filer som Git spårar kan du be Git att sluta spåra dem och ignorera ändringar.

I den här artikeln kan du se hur du:

  • Ignorera ändringar i ospårade filer med hjälp av en .gitignore fil.
  • Ignorera ändringar i ospårade filer med hjälp av en exclude fil.
  • Sluta spåra en fil och ignorera ändringar med hjälp git update-index av kommandot .
  • Sluta spåra en fil och ignorera ändringar med hjälp git rm av kommandot .

Använda en .gitignore-fil

Du kan be Git att inte spåra vissa filer i projektet genom att lägga till och konfigurera en .gitignore-fil . Poster i en .gitignore fil gäller endast för ospårade filer. De hindrar inte Git från att rapportera ändringar till spårade filer. Spårade filer är filer som har checkats in och finns i den senaste Git-ögonblicksbilden.

Varje rad i en .gitignore fil anger ett filsökningsmönster i förhållande till .gitignore filsökvägen. .gitignore-syntaxen är flexibel och stöder användningen av jokertecken för att ange enskilda eller flera filer efter namn, tillägg och sökväg. Git matchar .gitignore sökmönster till filerna i projektet för att avgöra vilka filer som ska ignoreras.

Vanligtvis lägger du till en .gitignore fil i rotmappen för projektet. Du kan dock lägga till en fil i valfri .gitignore projektmapp för att låta Git veta vilka filer som ska ignoreras i mappen och dess undermappar på valfritt kapslat djup. För flera .gitignore filer har de filsökningsmönster som en .gitignore fil anger i en mapp företräde framför de mönster som en .gitignore fil anger i en överordnad mapp.

Du kan skapa en .gitignore fil manuellt och lägga till filmönsterposter i den. Du kan också spara tid genom att ladda ned en .gitignore mall för din utvecklingsmiljö från GitHub gitignore-lagringsplatsen. En av fördelarna med att använda en .gitignore fil är att du kan checka in ändringar och dela dem med andra.

Kommentar

Visual Studio skapar automatiskt en .gitignore fil för Visual Studio-utvecklingsmiljön när du skapar en Git-lagringsplats.

Visual Studio 2022 tillhandahåller en Git-versionskontroll via Git-menyn , Git-ändringar och snabbmenyer i Solution Explorer. Visual Studio 2019 version 16.8 erbjuder även Användargränssnittet för Team Explorer Git. Mer information finns på fliken Visual Studio 2019 – Team Explorer .

I fönstret Git-ändringar högerklickar du på alla ändrade filer som du vill att Git ska ignorera och väljer sedan Ignorera det här lokala objektet eller Ignorera det här tillägget. Dessa menyalternativ finns inte för spårade filer.

Skärmbild av snabbmenyalternativen för ändrade filer i fönstret Git-ändringar i Visual Studio.

Alternativet Ignorera det här lokala objektet lägger till en ny post i .gitignore filen och den valda filen tas bort från listan över ändrade filer.

Alternativet Ignorera det här tillägget lägger till en ny post i .gitignore filen och tar bort alla filer med samma filnamnstillägg som den valda filen från listan över ändrade filer.

Båda alternativen skapar en .gitignore fil om den inte redan finns i rotmappen på lagringsplatsen och lägger till en post i den.

Redigera en gitignore-fil

Varje post i .gitignore filen är antingen: ett filsökningsmönster som anger vilka filer som ska ignoreras, en kommentar som börjar med ett taltecken (#) eller en tom rad (för läsbarhet). Syntaxen .gitignore är flexibel och stöder användningen av jokertecken för att ange enskilda eller flera filer efter namn, tillägg och sökväg. Alla sökvägar för filsökningsmönster är relativa till .gitignore filen.

Här följer några exempel på vanliga mönster för filsökning:

# Ignore all files with the specified name.
# Scope is all repo folders.
config.json

# Ignore all files with the specified extension.
# Scope is all repo folders.
*.json

# Add an exception to prevent ignoring a file with the specified name.
# Scope is all repo folders.
!package.json

# Ignore a file with the specified name.
# Scoped to the 'logs' subfolder.
/logs/test.logfile

# Ignore all files with the specified name.
# Scoped to the 'logs' subfolder and all folders beneath it.
/logs/**/test.logfile

# Ignore all files in the 'logs' subfolder.
/logs/

Så snart du ändrar en .gitignore fil uppdaterar Git listan med filer som ignoreras.

Kommentar

Windows-användare måste använda ett snedstreck (/) som sökvägsavgränsare i en .gitignore fil i stället för att använda ett omvänt snedstreck (\). Alla användare måste lägga till ett avslutande snedstreck när de anger en mapp.

Använda en global .gitignore-fil

Du kan ange en .gitignore fil som en global ignorera-fil som gäller för alla lokala Git-lagringsplatser. Om du vill göra det använder du kommandot på git config följande sätt:

git config core.excludesfile <gitignore file path>

En global .gitignore fil hjälper till att säkerställa att Git inte checkar in vissa filtyper, till exempel kompilerade binärfiler, på någon lokal lagringsplats. Filsökningsmönster i en lagringsplatsspecifik .gitignore fil har företräde framför mönster i en global .gitignore fil.

Använda en exkluderingsfil

Du kan också lägga till poster för filsökningsmönster exclude i filen i mappen för .git/info/ din lokala lagringsplats. Filen exclude låter Git veta vilka ospårade filer som ska ignoreras. Den använder samma syntax för filsökningsmönster som en .gitignore fil.

Poster i en exclude fil gäller endast för ospårade filer. De hindrar inte Git från att rapportera ändringar i bekräftade filer som den redan spårar. Det finns bara en exclude fil per lagringsplats.

Eftersom Git inte checkar in eller push-överför filen kan du använda den exclude på ett säkert sätt för att ignorera filer i det lokala systemet utan att påverka någon annan.

Använda git update-index för att ignorera ändringar

Ibland är det praktiskt att tillfälligt sluta spåra en lokal lagringsplatsfil och låta Git ignorera ändringar i filen. Du kanske till exempel vill anpassa en inställningsfil för din utvecklingsmiljö utan risk för att genomföra ändringarna. För att göra det kan du köra git update-index kommandot med skip-worktree flaggan:

git update-index --skip-worktree <file path>

Om du vill återuppta spårningen git update-index kör du kommandot med --no-skip-worktree flaggan .

Eller så kan du tillfälligt sluta spåra en fil och låta Git ignorera ändringar i filen med hjälp git update-index av kommandot med assume-unchanged flaggan . Det här alternativet är mindre effektivt än skip-worktree flaggan eftersom en Git-åtgärd pull som ändrar filinnehåll kan återställa assume-unchanged flaggan.

git update-index --assume-unchanged <file path>

Om du vill återuppta spårningen git update-index kör du kommandot med --no-assume-unchanged flaggan .

Använda git rm för att ignorera ändringar

Poster i en .gitignore eller exclude en fil har ingen effekt på filer som Git redan spårar. Git spårar filer som du tidigare har checkat in. Om du vill ta bort en fil permanent från Git-ögonblicksbilden så att Git inte längre spårar den, men utan att ta bort den från filsystemet, kör du följande kommandon:

git rm --cached <file path>
git commit <some message>

Använd sedan en .gitignore post eller exclude en filpost för att förhindra att Git rapporterar ändringar i filen.

Nästa steg