Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.54.0 no changes
-
2.53.0
2026-02-02
-
2.52.0
2025-11-17
- 2.51.1 â 2.51.2 no changes
-
2.51.0
2025-08-18
- 2.50.1 no changes
-
2.50.0
2025-06-16
- 2.44.1 â 2.49.1 no changes
-
2.44.0
2024-02-23
- 2.43.1 â 2.43.7 no changes
-
2.43.0
2023-11-20
- 2.41.1 â 2.42.4 no changes
-
2.41.0
2023-06-01
- 2.38.1 â 2.40.4 no changes
-
2.38.0
2022-10-02
- 2.34.1 â 2.37.7 no changes
-
2.34.0
2021-11-15
- 2.31.1 â 2.33.8 no changes
- 2.31.0 no changes
- 2.30.1 â 2.30.9 no changes
-
2.30.0
2020-12-27
- 2.29.1 â 2.29.3 no changes
-
2.29.0
2020-10-19
- 2.23.1 â 2.28.1 no changes
-
2.23.0
2019-08-16
- 2.16.6 â 2.22.5 no changes
- 2.15.4 no changes
- 2.13.7 â 2.14.6 no changes
-
2.12.5
2017-09-22
-
2.11.4
2017-09-22
- 2.9.5 â 2.10.5 no changes
-
2.8.6
2017-07-30
-
2.7.6
2017-07-30
- 2.6.7 no changes
-
2.5.6
2017-05-05
-
2.4.12
2017-05-05
-
2.3.10
2015-09-28
- 2.1.4 â 2.2.3 no changes
-
2.0.5
2014-12-17
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 somgitdiffberÀ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.
gitblame--reverseSTARTtas somgitblame--reverseSTART..HEADfö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Ä
nonematas 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
--progresstillsammans med--porcelaineller--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-Catt 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 konfigurationsalternativetblame.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 enfsck.skipList. Detta alternativ kan upprepas, och dessa filer kommer att bearbetas efter alla filer som angetts med konfigurationsalternativetblame.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.highlightRecentstyr 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.algorithmtill 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
-seller-eanges); 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.
-
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.
-
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.).
-
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).
NoteFö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
Se gitmailmap[5].
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 See original version for this content. |
GIT
En del av git[1]-sviten