Svenska â–Ÿ Topics â–Ÿ Latest version â–Ÿ git-blame last updated in 2.53.0

NAMN

git-blame - Visa vilken version och författare som sist modifierade varje rad i en fil

SYNOPSIS

git blame [-c] [-b] [-l] [--root] [-t] [-f] [-n] [-s] [-e] [-p] [-w] [--incremental]
	    [-L <intervall>] [-S <revs-file>] [-M] [-C] [-C] [-C] [--since=<datum>]
	    [--ignore-rev <rev>] [--ignore-revs-file <fil>]
	    [--color-lines] [--color-by-age] [--progress] [--abbrev=<n>]
	    [ --contents <file> ] [<rev> | --reverse <rev>..<rev>] [--] <fil>

BESKRIVNING

Annoterar varje rad i den givna filen med information frÄn den revision som senast Àndrade raden. Börja annotera frÄn den givna revisionen om du vill.

NÀr -L anges en eller flera gÄnger begrÀnsar det annoteringen till de begÀrda raderna.

Radernas ursprung följs automatiskt vid namnbyten av hela filer (för nÀrvarande finns det inget alternativ att stÀnga av namnbytesfunktionen). För att följa rader som flyttats frÄn en fil till en annan, eller för att följa rader som kopierats och klistrats in frÄn en annan fil, etc., se alternativen -C och -M.

Rapporten berÀttar ingenting om rader som har tagits bort eller ersatts; du behöver anvÀnda ett verktyg som git diff eller grÀnssnittet "pickaxe" som kortfattat nÀmns i följande stycke.

Förutom att stödja fil-annoteringar stöder Git Àven sökning i utvecklingshistoriken för att se nÀr ett kodavsnitt intrÀffade i en Àndring. Detta gör det möjligt att spÄra nÀr ett kodavsnitt lades till i en fil, flyttades eller kopierades mellan filer, och slutligen raderades eller ersattes. Det fungerar genom att söka efter en textstrÀng i diff-filen. Ett litet exempel pÄ pickaxe-grÀnssnittet som söker efter blame_usage:

$ git log --pretty=oneline -S'blame_usage'
5040f17eba15504bad66b14a645bddd9b015ebb7 blame -S <ancestry-fil>
ea4c7f9bf69e781dd0cd88d2bccb2bf5cc15c9a7 git-blame: Make the output

ALTERNATIV

-b

Visa tom SHA-1 för grÀns-incheckningar. Detta kan ocksÄ styras via konfigurationsalternativet blame.blankBoundary.

--root

Behandla inte root-incheckningar som grÀnser. Detta kan ocksÄ styras via konfigurationsalternativet blame.showRoot.

--show-stats

Inkludera ytterligare statistik i slutet av skyldiga utdata.

-L <start>,<slut>
-L :<funktionsnamn>

Kommentera endast radintervallet som anges av <start>,<slut> eller av funktionsnamnets regex <funktionsnamn>. Kan anges flera gĂ„nger. Överlappande intervall Ă€r tillĂ„tna.

<start> och <slut> Àr valfria. -L <start> eller -L <start>, strÀcker sig frÄn <start> till slutet av filen. -L ,<slut> strÀcker sig frÄn början av filen till <slut>.

<start> och <slut> kan anta en av dessa former:

  • <nummer>

    Om <start> eller <slut> Àr ett tal, anger det ett absolut radnummer (raderna rÀknas frÄn 1).

  • /<regex>/

    Formen anvÀnder den första raden som matchar det givna POSIX-vÀrdet <regex>. Om <start> Àr ett regex, söker den frÄn slutet av föregÄende -L-intervall, om nÄgot, annars frÄn början av filen. Om <start> Àr ^/<regex>/, söker den frÄn början av filen. Om <slut> Àr ett regex, börjar sökandet pÄ raden som anges av <start>.

  • +<offset> or -<offset>

    Detta gÀller endast för <slut> och anger ett antal rader före eller efter raden som anges av <start>.

Om :<funktionsnamn> anges i stÀllet för <start> och <slut>, Àr det ett reguljÀrt uttryck som anger intervallet frÄn den första funktionsnamn-raden som matchar <funktionsnamn>, upp till nÀsta funcname-rad. :<funktionsnamn> söker frÄn slutet av föregÄende -L-intervall, om nÄgot, annars frÄn början av filen. ^:<funktionsnamn> söker frÄn början av filen. Funktionsnamnen bestÀms pÄ samma sÀtt som git diff berÀknar patch-hunk-headers (se Definiera en anpassad hunk-header i gitattributes[5]).

-l

Visa lÄng rev (Standard: av).

-t

Visa rÄ tidsstÀmpel (Standard: av).

-S <revs-fil>

AnvÀnd revisioner frÄn revs-filen i stÀllet för att anropa git-rev-list[1].

--reverse <rev>..<rev>

GÄ framÄt i stÀllet för bakÄt i historiken. I stÀllet för att visa den version dÀr en rad förekom, visar detta den senaste versionen dÀr en rad har funnits. Detta krÀver ett versionsintervall som START..SLUT dÀr sökvÀgen att skylla finns i START. git blame --reverse START tas som git blame --reverse START..HEAD för enkelhetens skull.

--first-parent

Följ endast den första överordnade incheckningen nÀr en sammanslagningsincheckning visas. Alternativet kan anvÀndas för att avgöra nÀr en rad introducerades i en viss integrationsgren, snarare Àn nÀr den introducerades i historiken överlag.

-p
--porcelain

Visa i ett format utformat för maskinkonsumtion.

--line-porcelain

Visa porcelain-formatet, men mata ut incheckningsinformation för varje rad, inte bara första gÄngen en incheckning refereras. InnebÀr --porcelain.

--incremental

Visa resultatet stegvis i ett format som Àr utformat för maskin-konsumtion.

--encoding=<kodning>

Anger kodningen som anvÀnds för att mata ut författarnamn och incheckningssammanfattningar. Om den stÀlls in pÄ none matas blame-data ut som okonverterad. För mer information, se diskussionen om kodning pÄ manualsidan för git-log[1].

--contents <fil>

Kommentera med innehÄllet frÄn den namngivna filen, med början frÄn <rev> om det anges, och HEAD annars. Du kan ange - för att fÄ kommandot att lÀsas frÄn standard in för filinnehÄllet.

--date <format>

Anger formatet som anvÀnds för att mata ut datum. Om --date inte anges anvÀnds vÀrdet för konfigurationsvariabeln blame.date. Om konfigurationsvariabeln blame.date inte heller Àr instÀlld anvÀnds iso-formatet. För vÀrden som stöds, se diskussionen om alternativet --date pÄ git-log[1].

--progress
--no-progress

Förloppsstatus rapporteras som standard i standardfelströmmen nÀr den Àr ansluten till en terminal. Denna flagga aktiverar förloppsrapportering Àven om den inte Àr ansluten till en terminal. Det gÄr inte att anvÀnda --progress tillsammans med --porcelain eller --incremental.

-M[<num>]

Identifiera flyttade eller kopierade rader i en fil. NÀr en incheckning flyttar eller kopierar ett radblock (t.ex. originalfilen har A och sedan B, och incheckningen Àndrar det till B och sedan A), mÀrker den traditionella "skuld"-algoritmen bara hÀlften av rörelsen och skyller vanligtvis de rader som flyttades upp (d.v.s. B) pÄ förÀldern och tilldelar skulden till de rader som flyttades ner (d.v.s. A) till barnincheckningen. Med alternativet skylls bÄda grupperna av rader pÄ förÀldern genom att köra extra inspektionsomgÄngar.

<num> Àr valfritt men det Àr den nedre grÀnsen för antalet alfanumeriska tecken som Git mÄste upptÀcka som flytt/kopiering inom en fil för att dessa rader ska associeras med den överordnade incheckning. StandardvÀrdet Àr 20.

-C[<num>]

Utöver -M, upptÀcker rader som flyttats eller kopierats frÄn andra filer som har Àndrats i samma incheckning. Detta Àr anvÀndbart nÀr du omorganiserar ditt program och flyttar kod mellan filer. NÀr det hÀr alternativet anges tvÄ gÄnger letar kommandot dessutom efter kopior frÄn andra filer i den incheckning som skapar filen. NÀr det hÀr alternativet anges tre gÄnger letar kommandot dessutom efter kopior frÄn andra filer i valfri incheckning.

<num> Àr valfritt men det Àr den nedre grÀnsen för antalet alfanumeriska tecken som Git mÄste upptÀcka vid flyttning/kopiering mellan filer för att dessa rader ska associeras med den överordnade incheckningen. Och standardvÀrdet Àr 40. Om det finns fler Àn ett -C-alternativ angivet, kommer <num>-argumentet för det sista -C att gÀlla.

--ignore-rev <rev>

Ignorera Àndringar gjorda av revisionen nÀr skuld tilldelas, som om Àndringen aldrig intrÀffade. Rader som Àndrades eller lades till av en ignorerad incheckning kommer att skyllas pÄ den föregÄende incheckning som Àndrade den raden eller nÀrliggande rader. Alternativet kan anges flera gÄnger för att ignorera mer Àn en revision. Om konfigurationsalternativet blame.markIgnoredLines Àr aktiverat kommer rader som Àndrades av en ignorerad incheckning och tillskrivits en annan incheckning att markeras med ett ? i skuldutdata. Om konfigurationsalternativet blame.markUnblamableLines Àr aktiverat markeras de rader som berörts av en ignorerad incheckning som vi inte kunde tillskriva en annan revision med ett *. I anvÀndardelslÀgena skriver vi ignored respektive unblamable pÄ en ny rad.

--ignore-revs-file <fil>

Ignorera revisioner som listas i fil, vilka mÄste ha samma format som en fsck.skipList. Detta alternativ kan upprepas, och dessa filer kommer att bearbetas efter alla filer som angetts med konfigurationsalternativet blame.ignoreRevsFile. Ett tomt filnamn, "", rensar listan över revideringar frÄn tidigare bearbetade filer.

--color-lines

FÀrglÀgg radannoteringar i standardformatet annorlunda om de kommer frÄn samma incheckning som föregÄende rad. Detta gör det enklare att skilja kodblock som introduceras av olika incheckningar. StandardfÀrgen Àr cyan och kan justeras med konfigurationsalternativet color.blame.repeatedLines.

--color-by-age

FÀrglÀgg linjeannoteringar beroende pÄ linjens Älder i standardformatet. Konfigurationsalternativet color.blame.highlightRecent styr vilken fÀrg som anvÀnds för varje Äldersintervall.

-h

Visa hjÀlpmeddelande.

-c

AnvÀnd samma utdatalÀge som git-annotate[1] (Standard: av).

--score-debug

Inkludera felsökningsinformation relaterad till förflyttning av rader mellan filer (se -C) och rader som flyttats inom en fil (se -M). Det första numret som listas Àr poÀngen. Detta Àr antalet alfanumeriska tecken som upptÀckts ha flyttats mellan eller inom filer. Detta mÄste vara över ett visst tröskelvÀrde för att git blame ska betrakta dessa kodrader som flyttade.

-f
--show-name

Visa filnamnet i den ursprungliga incheckningen. Som standard visas filnamnet om det finns nÄgon rad som kommer frÄn en fil med ett annat namn, pÄ grund av namnbytesdetektering.

-n
--show-number

Visa radnumret i den ursprungliga incheckningen (Standard: av).

-s

Undertryck författarnamnet och tidsstÀmpeln frÄn utdata.

-e
--show-email

Visa författarens e-postadress i stÀllet för författarnamnet (Standard: av). Detta kan ocksÄ styras via konfigurationsalternativet blame.showEmail.

-w

Ignorera blanktecken vid jÀmförelse av förÀlderns version och barnets för att hitta var raderna kommer ifrÄn.

--diff-algorithm=(patience|minimal|histogram|myers)

VÀlj en diff-algoritm. Varianterna Àr följande:

default
myers

Den grundlÀggande giriga diff-algoritmen. För nÀrvarande Àr detta standard.

minimal

LÀgg extra tid pÄ att se till att minsta möjliga skillnad produceras.

patience

AnvÀnd algoritmen "patience diff" nÀr du genererar patchar.

histogram

Denna algoritm utökar tÄlamodsalgoritmen till att "stödja vanliga element med lÄg förekomst".

Om du till exempel, konfigurerade variabeln diff.algorithm till ett vÀrde som inte Àr standard och vill anvÀnda standardvÀrdet, mÄste du anvÀnda alternativet --diff-algorithm=default.

--abbrev=<n>

I stÀllet för att anvÀnda standardvÀrdet 7+1 hexadecimala siffror som förkortat objektnamn, anvÀnd <m>+1 siffror, dÀr <m> Àr minst <n> men sÀkerstÀller att incheckningsobjektnamnen Àr unika. Observera att 1 kolumn anvÀnds för ett cirkumflet för att markera grÀnsen för incheckning.

STANDARDFORMATET

NÀr varken --porcelain eller --incremental Àr angivna, kommer git blame att mata ut annoteringar för varje rad med:

  • förkortat objektnamn för den incheckningen som raden kom ifrĂ„n;

  • författar indent (som standard författarnamn och datum, sĂ„vida inte -s eller -e anges); och

  • radnummer

före radinnehÄllet.

PORSLINSFORMATET

I det hÀr formatet, matas varje rad ut efter ett huvud; huvud Àr som minimum den första raden som har:

  • 40-byte SHA-1 för den incheckning som raden tillskrivs;

  • radnumret för raden i originalfilen;

  • radnumret för raden i den slutliga filen;

  • PĂ„ en rad som startar en grupp rader frĂ„n en annan incheckning Ă€n den föregĂ„ende, antalet rader i denna grupp. PĂ„ efterföljande rader saknas detta fĂ€lt.

Denna huvud-rad följs av följande information minst en gÄng för varje incheckning:

  • författarnamn ("author"), e-postadress ("author-mail"), tid ("author-time") och tidszon ("author-tz"); pĂ„ samma sĂ€tt för incheckare.

  • filnamnet i incheckningen som raden tillskrivs.

  • den första raden i incheckningsloggmeddelandet ("sammanfattning").

InnehÄllet pÄ den faktiska raden matas ut efter ovanstÄende huvud, prefixerat av en TAB. Detta Àr för att möjliggöra att fler huvud-element kan lÀggas till senare.

porcelain-formatet undertrycker generellt incheckningsinformation som redan har visats. Till exempel kommer tvÄ rader som Àr kopplade till samma incheckning att visas, men detaljerna för den incheckningen visas bara en gÄng. Information som Àr specifik för enskilda rader kommer inte att grupperas tillsammans, som revs som markeras som "ignorerade" eller "icke-klanderliga". Detta Àr mer effektivt, men kan krÀva att lÀsaren behÄller mer status. Alternativet --line-porcelain kan anvÀndas för att mata ut fullstÀndig incheckningsinformation för varje rad, vilket möjliggör enklare (men mindre effektiv) anvÀndning som:

# rÀkna antalet rader som tillskrivs varje författare
git blame --line-porcelain file |
sed -n 's/^author //p' |
sort | uniq -c | sort -rn

ANGE INTERVALL

Till skillnad frÄn git blame och git annotate i Àldre versioner av git, kan annoteringens omfattning begrÀnsas till bÄde radintervall och revisionsintervall. Alternativet -L, som begrÀnsar annoteringen till ett radintervall, kan anges flera gÄnger.

NĂ€r du Ă€r intresserad av att hitta ursprunget för raderna 40-60 för filen foo kan du anvĂ€nda alternativet -L sĂ„ hĂ€r (de betyder samma sak — bĂ„da frĂ„gar efter 21 rader som börjar pĂ„ rad 40):

git blame -L 40,60 foo
git blame -L 40,+21 foo

Du kan ocksÄ anvÀnda ett reguljÀrt uttryck för att ange radintervallet:

git blame -L '/^sub hello {/,/^}$/' foo

vilket begrÀnsar annoteringen till brödtexten i subrutinen hello.

NÀr du inte Àr intresserad av Àndringar Àldre Àn version v2.6.18, eller Àndringar Àldre Àn 3 veckor, kan du anvÀnda specifikationer för revisionsintervall liknande git rev-list:

git blame v2.6.18.. -- foo
git blame --since=3.weeks -- foo

NÀr revisions-intervall specifikationer anvÀnds för att begrÀnsa annoteringen, skylls rader som inte har Àndrats sedan intervallgrÀnsen (antingen commit v2.6.18 eller den senaste incheckningen som Àr mer Àn 3 veckor gammal i exemplet ovan) för den intervall-grÀns incheckning.

Ett sÀrskilt anvÀndbart sÀtt Àr att se om en tillagd fil har rader som skapats genom kopiering och klistra in frÄn befintliga filer. Ibland indikerar detta att utvecklaren slarvat och inte omstrukturerade koden korrekt. Du kan först hitta den incheckningen som introducerade filen med:

git log --diff-filter=A --pretty=short -- foo

och sedan anteckna Àndringen mellan incheckningen och dess förÀldrar med hjÀlp av notationen commit^!:

git blame -C -C -f $commit^! -- foo

INKREMENTELL UTMATNING

NÀr kommandot anropas med alternativet --incremental, matar det ut resultatet allt eftersom det byggs. Utdata kommer generellt att tala om rader som berörts av nyare incheckningar först (dvs. raderna kommer att annoteras i fel ordning) och Àr avsett att anvÀndas av interaktiva tittare.

Utdataformatet liknar porcelain-formatet, men det innehÄller inte de faktiska raderna frÄn filen som annoteras.

  1. Varje skuld-post börjar alltid med en rad av:

    <40-byte-hex-sha1> <kÀllrad> <resultatrad> <antal-rader>

    Radnummer rÀknas frÄn 1.

  2. Första gÄngen en incheckning dyker upp i strömmen skrivs det ut diverse annan information om den med en enordstagg i början av varje rad som beskriver den extra incheckningsinformationen (författare, e-postadress, committer, datum, sammanfattning etc.).

  3. Till skillnad frÄn porcelain-formatet anges filnamnsinformationen alltid och avslutar posten:

    "filnamn" <filnamn-med-blanksteg-i-citat-ska-gÄ-hÀr>

    och dÀrmed Àr det egentligen ganska enkelt att tolka för nÄgon rad- och ordorienterad parser (vilket borde vara ganska naturligt för de flesta skriptsprÄk).

    Note
    För personer som utför parsning: för att göra det mer robust, ignorera bara alla rader mellan den första och sista ("<sha1>" och "filename" rader) dÀr du inte kÀnner igen taggorden (eller bryr dig om just det ordet) i början av raderna "utökad information". PÄ sÄ sÀtt, om det nÄgonsin lÀggs till information (som incheckningskodningen eller kommentarer om extended commit), kommer en blame-lÀsare inte att bry sig.

KARTLÄGG FÖRFATTARE

KONFIGURATION

Allt under den hÀr raden i det hÀr avsnittet Àr selektivt inkluderat frÄn dokumentationen git-config[1]. InnehÄllet Àr detsamma som det som finns dÀr:

Warning

Missing sv/config/blame.adoc

See original version for this content.

SE ÄVEN

GIT

En del av git[1]-sviten