git-rev-list(1): Skillnad mellan sidversioner

Från Wiki.linux.se -Linux wikipedia på Svenska.
Hoppa till navigering Hoppa till sök
Ingen redigeringssammanfattning
Rad 1: Rad 1:
== NAMN ==
== NAMN ==


'''git-rev-list''' listar commit-objekt i omvänd kronologisk ordning
'''git-rev-list''' - listar commit-objekt i omvänd kronologisk ordning


== SYNOPSIS ==
== SYNOPSIS ==


<pre>
<pre>
git rev-list [<flaggor>] <commit>... [--] [<sökväg>...]
git rev-list [<alternativ>] <commit>... [--] [<sökväg>...]
</pre>
</pre>


== BESKRIVNING ==
== BESKRIVNING ==


'''git rev-list''' listar commits som kan nås genom att följa '''parent'''-länkarna från de angivna commit-objekten, men utesluter commits som kan nås från de objekt som anges med ett '''^''' framför sig. Utdata ges som standard i omvänd kronologisk ordning.
'''git rev-list''' listar commitar som kan nås genom att följa '''parent'''-länkarna från de angivna commitarna, men utesluter commitar som kan nås från commitar som anges med ett '''^''' framför. Som standard skrivs resultatet ut i omvänd kronologisk ordning.


Man kan tänka på detta som en mängdoperation. Commits som kan nås från någon av de commits som anges på kommandoraden bildar en mängd. Därefter dras de commits bort som kan nås från någon av de commits som anges med '''^''' framför sig. De återstående commitsen är de som skrivs ut.
Man kan se detta som en mängdoperation. Commits som kan nås från någon av de commitar som anges på kommandoraden bildar en mängd. Därefter dras de commitar som kan nås från någon av de commitar som anges med '''^''' framför bort från mängden. De återstående commitarna är det som skrivs ut. Flera alternativ och sökvägsparametrar kan användas för att begränsa resultatet ytterligare.


Olika andra flaggor och sökvägsparametrar kan användas för att begränsa resultatet ytterligare.
Följande kommando:
 
Exempel:


<pre>
<pre>
Rad 23: Rad 21:
</pre>
</pre>


betyder: lista alla commits som kan nås från '''foo''' eller '''bar''', men inte från '''baz'''.
betyder: lista alla commitar som kan nås från '''foo''' eller '''bar''', men inte från '''baz'''.


En särskild notation:
Den särskilda notationen:


<pre>
<pre>
Rad 50: Rad 48:
</pre>
</pre>


Den är användbar vid sammanslagningar. Den resulterande mängden commits är den symmetriska differensen mellan de två operanderna.
Den är användbar vid merge-situationer. Resultatet blir den symmetriska differensen mellan de två operandernas commit-mängder. Följande två kommandon är likvärdiga:
 
Följande två kommandon är likvärdiga:


<pre>
<pre>
Rad 59: Rad 55:
</pre>
</pre>


'''rev-list''' är ett grundläggande Git-kommando, eftersom det ger möjlighet att bygga och traversera commit-grafer. Därför har det många olika flaggor som gör att det kan användas av så olika kommandon som '''git bisect''' och '''git repack'''.
'''rev-list''' är ett grundläggande Git-kommando eftersom det kan bygga upp och traversera commit-historikens härkomstgrafer. Därför har kommandot många olika alternativ och används internt av så skilda kommandon som [[git-bisect(1)]] och [[git-repack(1)]].
 
== FLAGGOR ==
 
=== Begränsning av commits ===
 
Förutom att ange ett intervall av commits som ska listas med de särskilda notationerna ovan, kan ytterligare begränsningar användas.
 
Fler flaggor begränsar i allmänhet utdata ytterligare. Exempel: '''--since=<datum1>''' begränsar till commits nyare än <i><datum1></i>, och om den används tillsammans med '''--grep=<mönster>''' begränsas resultatet ytterligare till commits vars loggmeddelande innehåller en rad som matchar <i><mönster></i>, om inget annat anges.


Dessa begränsningar tillämpas före sorterings- och formateringsflaggor, som till exempel '''--reverse'''.
== ALTERNATIV ==


'''-'''<i><antal></i>, '''-n''' <i><antal></i>, '''--max-count='''<i><antal></i>
=== Begränsning av commitar ===


Begränsa utdata till <i><antal></i> commits.
Förutom att ange ett commit-intervall med de särskilda notationer som beskrivs ovan kan ytterligare begränsningar användas.


'''--skip='''<i><antal></i>
Flera begränsningsalternativ snävar normalt in resultatet ytterligare. Exempelvis begränsar '''--since='''<i>&lt;datum1&gt;</i> resultatet till commitar nyare än <i>&lt;datum1&gt;</i>, och om man dessutom använder '''--grep='''<i>&lt;mönster&gt;</i> begränsas resultatet ytterligare till commitar vars loggmeddelande innehåller en rad som matchar <i>&lt;mönster&gt;</i>, om inget annat anges.


Hoppa över <i><antal></i> commits innan utdata börjar visas.
Observera att dessa begränsningar används före alternativ för sortering och formatering, till exempel '''--reverse'''.


'''--since='''<i><datum></i>, '''--after='''<i><datum></i>
'''-'''<i>&lt;antal&gt;</i>, '''-n''' <i>&lt;antal&gt;</i>, '''--max-count='''<i>&lt;antal&gt;</i>


Visa commits som är nyare än <i><datum></i>.
Begränsa utskriften till <i>&lt;antal&gt;</i> commitar.


'''--since-as-filter='''<i><datum></i>
'''--skip='''<i>&lt;antal&gt;</i>


Visa alla commits som är nyare än <i><datum></i>. Detta besöker alla commits i intervallet, i stället för att stanna vid den första commit som är äldre än <i><datum></i>.
Hoppa över <i>&lt;antal&gt;</i> commitar innan utskriften börjar.


'''--until='''<i><datum></i>, '''--before='''<i><datum></i>
'''--since='''<i>&lt;datum&gt;</i>, '''--after='''<i>&lt;datum&gt;</i>


Visa commits som är äldre än <i><datum></i>.
Visa commitar som är nyare än <i>&lt;datum&gt;</i>.


'''--max-age='''<i><tidsstämpel></i>, '''--min-age='''<i><tidsstämpel></i>
'''--since-as-filter='''<i>&lt;datum&gt;</i>


Begränsa utdata till ett angivet tidsintervall.
Visa alla commitar som är nyare än <i>&lt;datum&gt;</i>. Till skillnad från '''--since''' besöks alla commitar i intervallet, i stället för att vandringen stoppas när den första äldre commiten hittas.


'''--author='''<i><mönster></i>, '''--committer='''<i><mönster></i>
'''--until='''<i>&lt;datum&gt;</i>, '''--before='''<i>&lt;datum&gt;</i>


Begränsa commit-utdata till commits vars author- eller committer-rader matchar det reguljära uttrycket <i><mönster></i>.
Visa commitar som är äldre än <i>&lt;datum&gt;</i>.


Om flera '''--author='''<i><mönster></i> anges väljs commits där författaren matchar något av mönstren. Detsamma gäller flera '''--committer='''<i><mönster></i>.
'''--max-age='''<i>&lt;tidsstämpel&gt;</i>, '''--min-age='''<i>&lt;tidsstämpel&gt;</i>


'''--grep-reflog='''<i><mönster></i>
Begränsa de commitar som skrivs ut till ett angivet tidsintervall.


Begränsa commit-utdata till commits med reflog-poster som matchar det reguljära uttrycket <i><mönster></i>.
'''--author='''<i>&lt;mönster&gt;</i>, '''--committer='''<i>&lt;mönster&gt;</i>


Om flera '''--grep-reflog''' anges väljs commits vars reflog-meddelande matchar något av mönstren.
Begränsa resultatet till commitar vars author- eller committer-rader matchar det reguljära uttrycket <i>&lt;mönster&gt;</i>. Om flera '''--author='''<i>&lt;mönster&gt;</i> anges väljs commitar där författaren matchar något av mönstren. Samma princip gäller för flera '''--committer='''<i>&lt;mönster&gt;</i>.


Det är ett fel att använda denna flagga om inte '''--walk-reflogs''' används.
'''--grep-reflog='''<i>&lt;mönster&gt;</i>


'''--grep='''<i><mönster></i>
Begränsa resultatet till commitar med reflog-poster som matchar det reguljära uttrycket <i>&lt;mönster&gt;</i>. Om flera '''--grep-reflog''' anges väljs commitar vars reflog-meddelande matchar något av mönstren. Det är ett fel att använda detta alternativ utan '''--walk-reflogs'''.


Begränsa commit-utdata till commits vars loggmeddelande matchar det reguljära uttrycket <i><mönster></i>.
'''--grep='''<i>&lt;mönster&gt;</i>


Om flera '''--grep='''<i><mönster></i> anges väljs commits vars meddelande matchar något av mönstren, se dock '''--all-match'''.
Begränsa resultatet till commitar vars loggmeddelande matchar det reguljära uttrycket <i>&lt;mönster&gt;</i>. Om flera '''--grep='''<i>&lt;mönster&gt;</i> anges väljs commitar vars meddelande matchar något av mönstren, men se även '''--all-match'''.


'''--all-match'''
'''--all-match'''


Begränsa commit-utdata till commits som matchar alla angivna '''--grep'''-mönster, i stället för commits som matchar minst ett.
Begränsa resultatet till commitar som matchar alla angivna '''--grep'''-mönster, i stället för minst ett.


'''--invert-grep'''
'''--invert-grep'''


Begränsa commit-utdata till commits vars loggmeddelande inte matchar mönstret som angivits med '''--grep='''<i><mönster></i>.
Begränsa resultatet till commitar vars loggmeddelande inte matchar mönstret som angavs med '''--grep='''<i>&lt;mönster&gt;</i>.


'''-i''', '''--regexp-ignore-case'''
'''-i''', '''--regexp-ignore-case'''


Matcha reguljära uttryck utan hänsyn till versaler och gemener.
Matcha de begränsande reguljära uttrycken utan hänsyn till versaler och gemener.


'''--basic-regexp'''
'''--basic-regexp'''


Tolkar begränsningsmönstren som grundläggande reguljära uttryck. Detta är standard.
Tolka begränsningsmönstren som grundläggande reguljära uttryck. Detta är standard.


'''-E''', '''--extended-regexp'''
'''-E''', '''--extended-regexp'''


Tolkar begränsningsmönstren som utökade reguljära uttryck i stället för grundläggande reguljära uttryck.
Tolka begränsningsmönstren som utökade reguljära uttryck i stället för grundläggande reguljära uttryck.


'''-F''', '''--fixed-strings'''
'''-F''', '''--fixed-strings'''


Tolkar begränsningsmönstren som fasta strängar. Mönstret tolkas alltså inte som ett reguljärt uttryck.
Tolka begränsningsmönstren som fasta strängar, inte som reguljära uttryck.


'''-P''', '''--perl-regexp'''
'''-P''', '''--perl-regexp'''


Tolkar begränsningsmönstren som Perl-kompatibla reguljära uttryck.
Tolka begränsningsmönstren som Perl-kompatibla reguljära uttryck. Stöd för denna typ av uttryck är ett valfritt byggtidsberoende. Om Git inte kompilerades med stöd för dem avslutas kommandot med fel när alternativet används.
 
Stöd för dessa reguljära uttryck är ett valfritt kompileringsberoende. Om Git inte kompilerats med stöd för dem kommer kommandot att avslutas med fel när denna flagga används.


'''--remove-empty'''
'''--remove-empty'''


Stanna när en angiven sökväg försvinner från trädet.
Stoppa när en angiven sökväg försvinner från trädet.


'''--merges'''
'''--merges'''


Skriv endast ut merge-commits. Detta är exakt samma som:
Skriv endast ut merge-commitar. Detta är exakt samma sak som '''--min-parents=2'''.


<pre>
'''--no-merges'''
--min-parents=2
 
</pre>
Skriv inte ut commitar med fler än en parent. Detta är exakt samma sak som '''--max-parents=1'''.
 
'''--min-parents='''<i>&lt;antal&gt;</i>, '''--max-parents='''<i>&lt;antal&gt;</i>, '''--no-min-parents''', '''--no-max-parents'''


'''--no-merges'''
Visa endast commitar som har minst respektive högst så många parent-commitar. Särskilt gäller att '''--max-parents=1''' är samma sak som '''--no-merges''', och '''--min-parents=2''' är samma sak som '''--merges'''. '''--max-parents=0''' ger alla rotcommitar, och '''--min-parents=3''' ger alla octopus-mergar.


Skriv inte ut commits med mer än en parent. Detta är exakt samma som:
'''--no-min-parents''' och '''--no-max-parents''' återställer dessa gränser till ingen gräns. Likvärdiga former är '''--min-parents=0''' och '''--max-parents=-1'''. Negativa tal betyder ingen övre gräns.


<pre>
'''--first-parent'''
--max-parents=1
</pre>


'''--min-parents='''<i><antal></i>, '''--max-parents='''<i><antal></i>, '''--no-min-parents''', '''--no-max-parents'''
När commitar letas fram för inkludering följs endast första parent när en merge-commit påträffas. Detta kan ge en bättre översikt över utvecklingen av en viss topic branch, eftersom merge-commitar in i en sådan gren ofta bara handlar om att uppdatera mot upstream. Med detta alternativ kan man ignorera de enskilda commitar som drogs in i historiken genom en sådan merge.


Visa endast commits som har minst, eller högst, det angivna antalet parent-commits.
'''--exclude-first-parent-only'''


Särskilda fall:
När commitar letas fram för exkludering med '''^''' följs endast första parent när en merge-commit påträffas. Detta kan användas för att hitta ändringsmängden i en topic branch från punkten där den avvek från en remote branch, även om godtyckliga merge-commitar förekommer som legitima ändringar i topic-branchen.


<pre>
'''--not'''
--max-parents=1
</pre>


är samma som '''--no-merges'''.
Vänder betydelsen av prefixet '''^''' — eller avsaknaden av det — för alla efterföljande revisionsangivelser fram till nästa '''--not'''. När alternativet används på kommandoraden före '''--stdin''' påverkas inte de revisioner som skickas via standard in. Omvänt påverkar '''--not''' som skickas via standard in inte de revisioner som angavs på kommandoraden.


<pre>
'''--all'''
--min-parents=2
</pre>


är samma som '''--merges'''.
Låtsas som om alla refs i '''refs/''', tillsammans med '''HEAD''', angavs på kommandoraden som <i>&lt;commit&gt;</i>.


<pre>
'''--branches'''['''='''<i>&lt;mönster&gt;</i>]
--max-parents=0
</pre>


ger alla rot-commits.
Låtsas som om alla refs i '''refs/heads''' angavs på kommandoraden som <i>&lt;commit&gt;</i>. Om <i>&lt;mönster&gt;</i> anges begränsas grenarna till de som matchar det givna shell-globmönstret. Om <i>&lt;mönster&gt;</i> saknar '''?''', '''*''' eller '''[''' läggs '''/*''' implicit till i slutet.


<pre>
'''--tags'''['''='''<i>&lt;mönster&gt;</i>]
--min-parents=3
</pre>


ger alla octopus-merges.
Låtsas som om alla refs i '''refs/tags''' angavs på kommandoraden som <i>&lt;commit&gt;</i>. Om <i>&lt;mönster&gt;</i> anges begränsas taggarna till de som matchar det givna shell-globmönstret. Om mönstret saknar '''?''', '''*''' eller '''[''' läggs '''/*''' implicit till i slutet.


'''--no-min-parents''' och '''--no-max-parents''' återställer dessa begränsningar. Likvärdiga former är:
'''--remotes'''['''='''<i>&lt;mönster&gt;</i>]


<pre>
Låtsas som om alla refs i '''refs/remotes''' angavs på kommandoraden som <i>&lt;commit&gt;</i>. Om <i>&lt;mönster&gt;</i> anges begränsas remote-tracking-grenar till de som matchar det givna shell-globmönstret. Om mönstret saknar '''?''', '''*''' eller '''[''' läggs '''/*''' implicit till i slutet.
--min-parents=0
--max-parents=-1
</pre>


Negativa tal betyder ingen övre gräns.
'''--glob='''<i>&lt;glob-mönster&gt;</i>


'''--first-parent'''
Låtsas som om alla refs som matchar shell-globmönstret <i>&lt;glob-mönster&gt;</i> angavs på kommandoraden som <i>&lt;commit&gt;</i>. Inledande '''refs/''' läggs automatiskt till om det saknas. Om mönstret saknar '''?''', '''*''' eller '''[''' läggs '''/*''' implicit till i slutet.


När commits som ska inkluderas hittas, följ endast den första parent-commiten när en merge-commit påträffas.
'''--exclude='''<i>&lt;glob-mönster&gt;</i>


Detta kan ge en bättre överblick när man visar utvecklingen av en viss topic branch, eftersom sammanslagningar in i en topic branch ofta bara handlar om att anpassa sig till uppdaterad upstream. Flaggan gör att man kan ignorera de enskilda commits som fördes in i historiken av en sådan merge.
Ta inte med refs som matchar <i>&lt;glob-mönster&gt;</i> när nästa '''--all''', '''--branches''', '''--tags''', '''--remotes''' eller '''--glob''' annars skulle ha tagit hänsyn till dem. Upprepningar av alternativet ackumulerar exkluderingsmönster fram till nästa sådant pseudo-ref-alternativ. Andra alternativ eller argument rensar inte de ackumulerade mönstren.


'''--exclude-first-parent-only'''
Mönster som anges bör inte börja med '''refs/heads''', '''refs/tags''' eller '''refs/remotes''' när de används med '''--branches''', '''--tags''' respektive '''--remotes'''. De måste däremot börja med '''refs/''' när de används med '''--glob''' eller '''--all'''. Om ett avslutande '''/*''' är avsett måste det anges uttryckligen.


När commits ska uteslutas med '''^''', följ endast den första parent-commiten när en merge-commit påträffas.
'''--exclude-hidden='''('''fetch'''|'''receive'''|'''uploadpack''')


Detta kan användas för att hitta mängden ändringar i en topic branch från den punkt där den skilde sig från fjärrgrenen, även när godtyckliga merges är giltiga ändringar i topic branchen.
Ta inte med refs som skulle döljas av '''git-fetch''', '''git-receive-pack''' eller '''git-upload-pack''' genom inställningarna '''fetch.hideRefs''', '''receive.hideRefs''' eller '''uploadpack.hideRefs''' tillsammans med '''transfer.hideRefs'''. Se [[git-config(1)]]. Alternativet påverkar nästa pseudo-ref-alternativ '''--all''' eller '''--glob''' och rensas därefter.


'''--not'''
'''--reflog'''


Vänder betydelsen av prefixet '''^''', eller frånvaron av det, för alla efterföljande revisionsangivelser fram till nästa '''--not'''.
Låtsas som om alla objekt som nämns i refloggar angavs på kommandoraden som <i>&lt;commit&gt;</i>.


När flaggan används på kommandoraden före '''--stdin''' påverkas inte revisioner som skickas via standard in. Omvänt gäller att när '''--not''' skickas via standard in påverkas inte revisioner som angivits på kommandoraden.
'''--alternate-refs'''


'''--all'''
Låtsas som om alla objekt som nämns som ref-spetsar i alternativa arkiv angavs på kommandoraden. Ett alternativt arkiv är ett arkiv vars objektkatalog anges i '''objects/info/alternates'''. Mängden inkluderade objekt kan ändras av exempelvis '''core.alternateRefsCommand'''. Se [[git-config(1)]].


Låtsas som om alla referenser i:
'''--single-worktree'''


<pre>
Som standard undersöks alla working trees när flera finns, för alternativ som '''--all''', '''--reflog''' och '''--indexed-objects'''. Se [[git-worktree(1)]]. Detta alternativ gör att endast aktuell working tree undersöks.
refs/
</pre>


tillsammans med '''HEAD''' angivits på kommandoraden som <i><commit></i>.
'''--ignore-missing'''


'''--branches'''['''='''<i><mönster></i>]
Om ett ogiltigt objektnamn påträffas i indata låtsas Git som om det inte hade angivits.


Låtsas som om alla referenser i:
'''--stdin'''


<pre>
Läs argument från standard in utöver argument från kommandoraden. Detta accepterar commitar och pseudoalternativ som '''--all''' och '''--glob='''. När en '''--'''-avskiljare påträffas behandlas efterföljande indata som sökvägar som begränsar resultatet. Flaggor som '''--not''' som läses via standard in gäller endast argument som skickas på samma sätt och påverkar inte efterföljande kommandoradsargument.
refs/heads
</pre>


angivits på kommandoraden som <i><commit></i>.
'''--quiet'''


Om <i><mönster></i> anges begränsas grenarna till de som matchar ett shell-glob. Om mönstret saknar '''?''', '''*''' eller '''[''' läggs '''/*''' implicit till i slutet.
Skriv inget till standard ut. Denna form används främst för att låta anroparen kontrollera exitstatus för att avgöra om ett objektintervall är helt sammanhängande eller inte. Det är snabbare än att omdirigera standard ut till '''/dev/null''', eftersom utdata inte behöver formateras.


'''--tags'''['''='''<i><mönster></i>]
'''--disk-usage''', '''--disk-usage=human'''


Låtsas som om alla referenser i:
Undertryck normal utdata och skriv i stället ut summan av byte som används för lagring på disk av de valda commitarna eller objekten. Detta motsvarar att skicka resultatet till:


<pre>
<pre>
refs/tags
git cat-file --batch-check='%(objectsize:disk)'
</pre>
</pre>


angivits kommandoraden som <i><commit></i>.
men körs mycket snabbare, särskilt med '''--use-bitmap-index'''. Se avsnittet CAVEATS i [[git-cat-file(1)]] för begränsningar kring vad “lagring disk” betyder. Med det valfria värdet '''human''' visas storleken i ett människoläsbart format.


Om <i><mönster></i> anges begränsas taggarna till de som matchar ett shell-glob. Om mönstret saknar '''?''', '''*''' eller '''[''' läggs '''/*''' implicit till i slutet.
'''--cherry-mark'''


'''--remotes'''['''='''<i><mönster></i>]
Som '''--cherry-pick''', men markera likvärdiga commitar med '''=''' i stället för att utelämna dem, och icke-likvärdiga med '''+'''.


Låtsas som om alla referenser i:
'''--cherry-pick'''


<pre>
Utelämna commitar som introducerar samma ändring som en annan commit på den “andra sidan” när commit-mängden begränsas med symmetrisk differens.
refs/remotes
</pre>


angivits kommandoraden som <i><commit></i>.
Om man exempelvis har två grenar, '''A''' och '''B''', är ett vanligt sätt att lista commitar som bara finns ena sidan att använda '''--left-right'''. Det visar dock också commitar som cherry-pickats från den andra grenen. Med detta alternativ utesluts sådana commit-par.


Om <i><mönster></i> anges begränsas fjärrspårande grenar till de som matchar ett shell-glob. Om mönstret saknar '''?''', '''*''' eller '''[''' läggs '''/*''' implicit till i slutet.
'''--left-only''', '''--right-only'''


'''--glob='''<i><glob-mönster></i>
Lista endast commitar på respektive sida av en symmetrisk differens, alltså endast de som skulle markeras med '''&lt;''' respektive '''&gt;''' av '''--left-right'''.


Låtsas som om alla referenser som matchar shell-globen <i><glob-mönster></i> angivits på kommandoraden som <i><commit></i>.
Exempelvis utelämnar '''--cherry-pick --right-only A...B''' de commitar från '''B''' som finns i '''A''' eller är patch-likvärdiga med en commit i '''A'''. Med andra ord listas '''+'''-commitarna från '''git cherry A B'''. Mer exakt ger '''--cherry-pick --right-only --no-merges''' exakt samma lista.


Prefixet '''refs/''' läggs automatiskt till om det saknas. Om mönstret saknar '''?''', '''*''' eller '''[''' läggs '''/*''' implicit till i slutet.
'''--cherry'''


'''--exclude='''<i><glob-mönster></i>
En synonym för '''--right-only --cherry-mark --no-merges'''. Den är användbar för att begränsa resultatet till commitar på vår sida och markera de som redan har tillämpats på den andra sidan av en förgrenad historik, till exempel med:


Inkludera inte referenser som matchar <i><glob-mönster></i> och som nästa '''--all''', '''--branches''', '''--tags''', '''--remotes''' eller '''--glob''' annars skulle ha tagit med.
<pre>
git log --cherry upstream...mybranch
</pre>


Upprepningar av denna flagga ackumulerar exkluderingsmönster fram till nästa '''--all''', '''--branches''', '''--tags''', '''--remotes''' eller '''--glob'''. Andra flaggor eller argument rensar inte de ackumulerade mönstren.
Det liknar:
 
Mönster ska inte börja med:


<pre>
<pre>
refs/heads
git cherry upstream mybranch
refs/tags
refs/remotes
</pre>
</pre>


när de används med '''--branches''', '''--tags''' respektive '''--remotes'''.
'''-g''', '''--walk-reflogs'''
 
I stället för att vandra i commit-härkomstens kedja vandras reflog-poster från den senaste till äldre poster. När detta alternativ används kan man inte ange commitar som ska exkluderas, det vill säga notationer som '''^'''<i>&lt;commit&gt;</i>, <i>&lt;commit1&gt;</i>'''..'''<i>&lt;commit2&gt;</i> och <i>&lt;commit1&gt;</i>'''...'''<i>&lt;commit2&gt;</i> kan inte användas.


De måste däremot börja med '''refs/''' när de används med '''--glob''' eller '''--all'''.
Med andra pretty-format än '''oneline''' och '''reference''' läggs två extra rader med information från refloggen till i utdata. Reflog-väljaren kan visas som '''ref@{'''<i>&lt;N&gt;</i>'''}''' eller som '''ref@{'''<i>&lt;tidsstämpel&gt;</i>'''}''', beroende på reglerna nedan.


Om ett avslutande '''/*''' är avsett måste det anges uttryckligen.
# Om startpunkten anges som '''ref@{'''<i>&lt;N&gt;</i>'''}''' visas indexformatet.
# Om startpunkten anges som '''ref@{now}''' visas tidsstämpelformatet.
# Om inget av detta användes men '''--date''' angavs visas tidsstämpeln i det format som begärdes av '''--date'''.
# Annars visas indexformatet.
 
Med '''--pretty=oneline''' placeras denna information som prefix på samma rad som commit-meddelandet. Alternativet kan inte kombineras med '''--reverse'''. Se även [[git-reflog(1)]]. Med '''--pretty=reference''' visas inte denna information alls.
 
'''--merge'''


'''--exclude-hidden='''('''fetch'''|'''receive'''|'''uploadpack''')
Visa commitar som rör konfliktsökvägar i intervallet '''HEAD...'''<i>&lt;annan&gt;</i>, där <i>&lt;annan&gt;</i> är den första existerande pseudorefen i '''MERGE_HEAD''', '''CHERRY_PICK_HEAD''', '''REVERT_HEAD''' eller '''REBASE_HEAD'''. Fungerar endast när indexet har omatchade merge-poster. Alternativet kan användas för att visa relevanta commitar när konflikter från en trevägsmerge löses.


Ta inte med referenser som skulle döljas av '''git-fetch''', '''git-receive-pack''' eller '''git-upload-pack''' genom att läsa respektive konfiguration:
'''--boundary'''


<pre>
Skriv ut exkluderade gränscommitar. Gränscommitar får prefixet '''-'''.
fetch.hideRefs
receive.hideRefs
uploadpack.hideRefs
transfer.hideRefs
</pre>


Se [[git-config(1)]]. Denna flagga påverkar nästa pseudo-ref-flagga '''--all''' eller '''--glob''' och rensas efter att den behandlats.
'''--use-bitmap-index'''


'''--reflog'''
Försök snabba upp traverseringen med pack-bitmap-indexet, om ett sådant finns. Observera att när traversering sker med '''--objects''' skrivs inte sökvägar för träd och blobbar ut.


Låtsas som om alla objekt som nämns av reflogs angivits på kommandoraden som <i><commit></i>.
'''--progress='''<i>&lt;rubrik&gt;</i>


'''--alternate-refs'''
Visa förloppsrapporter på standard fel när objekt behandlas. Texten <i>&lt;rubrik&gt;</i> skrivs ut med varje förloppsuppdatering.


Låtsas som om alla objekt som nämns som ref-spetsar i alternativa arkiv angivits på kommandoraden.
'''-z'''


Ett alternativt arkiv är ett arkiv vars objektkatalog anges i:
I stället för att avgränsa objekt med radbrytning avgränsas varje utskrivet objekt och tillhörande metadata med NUL-byte. Utdata skrivs i formen:


<pre>
<pre>
objects/info/alternates
<OID> NUL [<token>=<värde> NUL]...
</pre>
</pre>


Mängden inkluderade objekt kan ändras med bland annat '''core.alternateRefsCommand'''. Se [[git-config(1)]].
Ytterligare objektmetadata, som objektsökvägar eller gränsobjekt, skrivs i formen <i>&lt;token&gt;</i>'''='''<i>&lt;värde&gt;</i>. Tokenvärden skrivs som de är, utan kodning eller avkortning. En OID-post innehåller aldrig tecknet '''=''' och markerar därför början på en ny objektpost. Exempel:
 
'''--single-worktree'''
 
Som standard undersöks alla arbetsträd av följande flaggor när det finns fler än ett arbetsträd, se [[git-worktree(1)]]:


<pre>
<pre>
--all
<OID> NUL
--reflog
<OID> NUL path=<sökväg> NUL
--indexed-objects
<OID> NUL boundary=yes NUL
<OID> NUL missing=yes NUL [<token>=<värde> NUL]...
</pre>
</pre>


Denna flagga tvingar dem att endast undersöka det aktuella arbetsträdet.
Detta läge är endast kompatibelt med utdataalternativen '''--objects''', '''--boundary''' och '''--missing'''.


'''--ignore-missing'''
=== Historikförenkling ===


När ett ogiltigt objektnamn påträffas i indata, låtsas som om den felaktiga indatan inte angavs.
Ibland är man bara intresserad av delar av historiken, till exempel commitar som ändrar en viss <i>&lt;sökväg&gt;</i>. Historikförenkling har två delar: dels vilka commitar som väljs ut, dels hur historiken förenklas. Det finns flera strategier.


'''--stdin'''
Följande alternativ väljer vilka commitar som ska visas:


Utöver argument från kommandoraden läses argument även från standard in. Detta accepterar commits och pseudo-flaggor som '''--all''' och '''--glob='''.
<i>&lt;sökvägar&gt;</i>


När separatorn '''--''' påträffas behandlas efterföljande indata som sökvägar och används för att begränsa resultatet.
Commits som ändrar de angivna sökvägarna väljs.


Flaggor som '''--not''' som läses via standard in respekteras endast för argument som skickats på samma sätt och påverkar inte efterföljande kommandoradsargument.
'''--simplify-by-decoration'''
 
'''--quiet'''


Skriv ingenting till standardutmatning. Denna form är främst avsedd för att låta anroparen testa avslutningsstatusen för att se om ett objektintervall är fullständigt sammanhängande eller inte.
Commits som pekas ut av någon gren eller tagg väljs.


Detta är snabbare än att omdirigera standardutmatning till:
Observera att extra commitar kan visas för att ge en meningsfull historik.


<pre>
Följande alternativ påverkar hur förenklingen utförs:
/dev/null
</pre>


eftersom utdata inte behöver formateras.
'''Standardläge'''


'''--disk-usage''', '''--disk-usage=human'''
Förenklar historiken till den enklaste historik som förklarar trädets slutliga tillstånd. “Enklast” betyder att vissa sidogrenar beskärs om slutresultatet är detsamma, exempelvis vid merge av grenar med samma innehåll.


Undertryck normal utdata. Skriv i stället ut summan av antalet byte som används för lagring på disk av de valda commitsen eller objekten.
'''--show-pulls'''


Detta motsvarar att skicka utdata till:
Ta med alla commitar från standardläget, men även merge-commitar som inte är TREESAME mot första parent men är TREESAME mot en senare parent. Detta är användbart för att visa de merge-commitar som först introducerade en ändring till en gren.


<pre>
'''--full-history'''
git cat-file --batch-check='%(objectsize:disk)'
</pre>


men kör mycket snabbare, särskilt med '''--use-bitmap-index'''.
Samma som standardläge, men utan att beskära viss historik.


Se avsnittet '''CAVEATS''' i [[git-cat-file(1)]] för begränsningar kring vad "lagring på disk" betyder.
'''--dense'''


Med det valfria värdet '''human''' visas lagringsstorleken i ett läsbart format, till exempel:
Endast de valda commitarna visas, plus sådana som behövs för en meningsfull historik.


<pre>
'''--sparse'''
12.24 KiB
3.50 MiB
</pre>


'''--cherry-mark'''
Alla commitar i den förenklade historiken visas.


Som '''--cherry-pick''', se nedan, men markera likvärdiga commits med '''=''' i stället för att utelämna dem, och icke-likvärdiga commits med '''+'''.
'''--simplify-merges'''


'''--cherry-pick'''
Ytterligare alternativ till '''--full-history''' som tar bort onödiga merge-commitar från resultatet när det inte finns några valda commitar som bidrar till mergen.


Utelämna commits som introducerar samma ändring som en annan commit på "andra sidan" när commit-mängden begränsas med symmetrisk differens.
'''--ancestry-path'''['''='''<i>&lt;commit&gt;</i>]


Om du till exempel har två grenar, '''A''' och '''B''', är ett vanligt sätt att lista alla commits som bara finns på en sida att använda '''--left-right'''. Men då visas commits som cherry-pickats från den andra grenen. Med denna flagga utesluts sådana par av commits från utdata.
När ett intervall av commitar ska visas, till exempel <i>&lt;commit1&gt;</i>'''..'''<i>&lt;commit2&gt;</i> eller <i>&lt;commit2&gt;</i> '''^'''<i>&lt;commit1&gt;</i>, och en commit <i>&lt;commit&gt;</i> finns i intervallet, visas endast commitar i intervallet som är förfäder till <i>&lt;commit&gt;</i>, ättlingar till <i>&lt;commit&gt;</i> eller <i>&lt;commit&gt;</i> själv. Om ingen commit anges används <i>&lt;commit1&gt;</i>, alltså den exkluderade delen av intervallet. Alternativet kan anges flera gånger; då inkluderas en commit om den är någon av de angivna commitarna eller är förfader eller ättling till någon av dem.


'''--left-only''', '''--right-only'''
En mer detaljerad förklaring följer.


Lista endast commits på respektive sida av en symmetrisk differens, det vill säga endast de som skulle markeras med '''<''' respektive '''>''' av '''--left-right'''.
Anta att du angav '''foo''' som sökväg. Vi kallar commitar som ändrar '''foo''' för '''!TREESAME''' och övriga för '''TREESAME'''. I en diff filtrerad för '''foo''' ser de olika respektive lika ut.


Exempel:
Följande exempelhistorik används för att visa skillnaden mellan olika förenklingsinställningar. Vi antar att man filtrerar på filen '''foo''' i denna commitgraf:


<pre>
<pre>
--cherry-pick --right-only A...B
          .-A---M---N---O---P---Q
        /    /  /  /  /  /
        I    B   C  D  E  Y
        \  /  /  /  /  /
          `-------------'  X
</pre>
</pre>


utelämnar de commits från '''B''' som finns i '''A''' eller är patch-likvärdiga med en commit i '''A'''.
Den horisontella raden A---Q betraktas som första parent för varje merge. Commits är följande:
 
* '''I''' är den initiala commiten där '''foo''' finns med innehållet '''asdf''' och filen '''quux''' finns med innehållet '''quux'''. Initiala commitar jämförs mot ett tomt träd, så '''I''' är !TREESAME.
* I '''A''' innehåller '''foo''' bara '''foo'''.
* '''B''' innehåller samma ändring som '''A'''. Dess merge '''M''' är trivial och därmed TREESAME mot alla parents.
* '''C''' ändrar inte '''foo''', men dess merge '''N''' ändrar den till '''foobar''', så den är inte TREESAME mot någon parent.
* '''D''' sätter '''foo''' till '''baz'''. Dess merge '''O''' kombinerar strängarna från '''N''' och '''D''' till '''foobarbaz''', och är därför inte TREESAME mot någon parent.
* '''E''' ändrar '''quux''' till '''xyzzy''', och dess merge '''P''' kombinerar strängarna till '''quux xyzzy'''. '''P''' är TREESAME mot '''O''', men inte mot '''E'''.
* '''X''' är en oberoende rotcommit som lade till filen '''side''', och '''Y''' ändrade den. '''Y''' är TREESAME mot '''X'''. Dess merge '''Q''' lade till '''side''' till '''P'''. '''Q''' är TREESAME mot '''P''', men inte mot '''Y'''.
 
'''rev-list''' går bakåt genom historiken och inkluderar eller exkluderar commitar beroende på om '''--full-history''' och/eller parent-omskrivning via '''--parents''' eller '''--children''' används.


Med andra ord listar detta '''+'''-commits från:
'''Standardläge'''


<pre>
Commits inkluderas om de inte är TREESAME mot någon parent. Om commiten är en merge och är TREESAME mot en parent, följs endast den parenten. Om det finns flera TREESAME-parents följs bara en av dem. Annars följs alla parents.
git cherry A B
</pre>


Mer exakt ger:
Resultatet blir:


<pre>
<pre>
--cherry-pick --right-only --no-merges
              .-A---N---O
            /    /  /
            I---------D
</pre>
</pre>


den exakta listan.
Regeln att bara följa en TREESAME-parent, om sådan finns, tog bort '''B''' helt från övervägande. '''C''' besöktes via '''N''', men är TREESAME. Rotcommitar jämförs mot ett tomt träd, så '''I''' är !TREESAME.


'''--cherry'''
'''--full-history utan parent-omskrivning'''


Synonym för:
Detta skiljer sig från standardläget på en punkt: alla parents till en merge följs alltid, även om mergen är TREESAME mot någon av dem. Även om mer än en sida av mergen har commitar som inkluderas betyder det inte att själva mergen inkluderas. I exemplet blir resultatet:


<pre>
<pre>
--right-only --cherry-mark --no-merges
I  A  B  N  D  O  P  Q
</pre>
</pre>


Användbar för att begränsa utdata till commits på vår sida och markera de som redan har tillämpats på andra sidan av en förgrenad historik:
'''M''' exkluderades eftersom den är TREESAME mot båda parents. '''E''', '''C''' och '''B''' vandrades alla, men bara '''B''' var !TREESAME.


<pre>
'''--full-history med parent-omskrivning'''
git log --cherry upstream...mybranch
</pre>


Det liknar:
Vanliga commitar inkluderas bara om de är !TREESAME, om inte detta ändras med exempelvis '''--sparse'''. Merges inkluderas alltid. Deras parent-listor skrivs däremot om: längs varje parent beskärs commitar som inte själva ingår. Resultatet blir:


<pre>
<pre>
git cherry upstream mybranch
              .-A---M---N---O---P---Q
            /    /  /  /  /
            I    B  /  D  /
            \  /  /  /  /
              `-------------'
</pre>
</pre>


'''-g''', '''--walk-reflogs'''
Jämför med '''--full-history''' utan omskrivning. '''E''' beskars eftersom den är TREESAME, men parent-listan för '''P''' skrevs om till att innehålla '''E''':s parent '''I'''. Samma sak hände för '''C''' och '''N''', samt '''X''', '''Y''' och '''Q'''.


I stället för att gå genom commit-ancestry, gå genom reflog-poster från den senaste till äldre poster.
'''--dense'''


När denna flagga används kan commits som ska exkluderas inte anges. Det betyder att notationer som:
Commits som vandras inkluderas om de inte är TREESAME mot någon parent.


<pre>
'''--sparse'''
^<commit>
<commit1>..<commit2>
<commit1>...<commit2>
</pre>


inte kan användas.
Alla commitar som vandras inkluderas. Observera att utan '''--full-history''' förenklas fortfarande merge-commitar: om en parent är TREESAME följs bara den, så de andra sidorna av mergen vandras aldrig.


Med '''--pretty''' i annat format än '''oneline''' och '''reference''' får utdata två extra rader med information från refloggen.
'''--simplify-merges'''


Reflog-angivelsen i utdata kan visas som:
Först byggs en historikgraf på samma sätt som '''--full-history''' med parent-omskrivning. Sedan förenklas varje commit '''C''' till sin ersättning '''C'''' i den slutliga historiken:


<pre>
* Sätt '''C'''' till '''C'''.
ref@{<Nth>}
* Ersätt varje parent '''P''' till '''C'''' med dess förenkling '''P''''. Under processen tas parents bort om de är förfäder till andra parents, eller är rotcommitar som är TREESAME mot ett tomt träd. Dubbletter tas bort, men Git ser till att aldrig ta bort alla parents som commiten är TREESAME mot.
</pre>
* Om '''C'''' efter omskrivningen är en rotcommit eller merge-commit, en boundary-commit eller !TREESAME, behålls den. Annars ersätts den med sin enda parent.


där <i><Nth></i> är det omvända kronologiska indexet i refloggen, eller som:
Exemplet blir:


<pre>
<pre>
ref@{<tidsstämpel>}
              .-A---M---N---O
            /    /      /
            I    B      D
            \  /      /
              `---------'
</pre>
</pre>


beroende reglerna nedan:
De viktiga skillnaderna mot '''--full-history''' med parent-omskrivning är bland annat att '''N''':s parent-lista fick '''I''' borttagen eftersom den är förfader till den andra parenten '''M''', att '''P''' togs bort eftersom den blev en TREESAME-commit med en enda parent, och att '''Q''' motsvarande sätt förenklades bort.


1. Om startpunkten anges som '''ref@{<Nth>}''' visas indexformatet.
'''--ancestry-path'''['''='''<i>&lt;commit&gt;</i>]


2. Om startpunkten anges som '''ref@{now}''' visas tidsstämpelformat.
Begränsa de visade commitarna till de som är förfader till <i>&lt;commit&gt;</i>, ättling till <i>&lt;commit&gt;</i>, eller <i>&lt;commit&gt;</i> själv.


3. Om inget av ovanstående används men '''--date''' angavs på kommandoraden, visas tidsstämpeln i det format som begärdes med '''--date'''.
Exempel:


4. Annars visas indexformatet.
<pre>
                D---E-------F
              /    \      \
              B---C---G---H---I---J
            /                    \
            A-------K---------------L--M
</pre>


Med '''--pretty=oneline''' läggs denna information före commit-meddelandet på samma rad.
Ett vanligt '''D..M''' beräknar commitar som är förfäder till '''M''' men utesluter de som är förfäder till '''D'''. I exemplet blir det alla commitar utom '''A''' och '''B''' samt '''D''' själv.


Flaggan kan inte kombineras med '''--reverse'''.
Om man vill hitta vilka commitar i '''M''' som är förorenade av en bugg introducerad i '''D''' vill man kanske bara visa delen av '''D..M''' som faktiskt är ättlingar till '''D'''. Det gör '''--ancestry-path''':


Se även [[git-reflog(1)]].
<pre>
                    E-------F
                    \      \
                      G---H---I---J
                                  \
                                    L--M
</pre>


Med '''--pretty=reference''' visas inte denna information alls.
Med '''--ancestry-path=H D..M''' blir resultatet:
 
'''--merge'''
 
Visa commits som rör konfliktfyllda sökvägar i intervallet:


<pre>
<pre>
HEAD...<other>
                    E
                    \
                  C---G---H---I---J
                                  \
                                    L--M
</pre>
</pre>


där <i><other></i> är den första befintliga pseudoreferensen i:
Med '''--ancestry-path=K D..M''' blir resultatet:


<pre>
<pre>
MERGE_HEAD
                    K---------------L--M
CHERRY_PICK_HEAD
REVERT_HEAD
REBASE_HEAD
</pre>
</pre>


Fungerar endast när indexet har omatchade poster. Flaggan kan användas för att visa relevanta commits vid lösning av konflikter från en trevägsmerge.
'''--show-pulls'''


'''--boundary'''
För att förstå '''--show-pulls''' används ett nytt exempel:


Skriv ut exkluderade gränscommits. Gränscommits får prefixet '''-'''.
<pre>
          .-A---M-----C--N---O---P
        /    / \  \  \/  /  /
        I    B  \  R-'`-Z'   /
        \  /    \/        /
          \ /      /\        /
          `---X--' `---Y--'
</pre>


'''--use-bitmap-index'''
Anta att '''I''' skapade '''file.txt''', som ändrades av '''A''', '''B''' och '''X''' på olika sätt. Commits '''C''', '''Z''' och '''Y''' ändrar inte '''file.txt'''. Mergen '''M''' löste konflikten genom att inkludera ändringar från både '''A''' och '''B''' och är därför inte TREESAME mot någon av dem. Mergen '''R''' skapades däremot genom att ignorera innehållet i '''file.txt''' vid '''M''' och endast ta innehållet från '''X'''. Därför är '''R''' TREESAME mot '''X''', men inte mot '''M'''. Mergen '''N''' tar naturligt innehållet från '''R''', så '''N''' är TREESAME mot '''R''', men inte mot '''C'''. Mergarna '''O''' och '''P''' är TREESAME mot sina första parents, men inte mot sina andra parents '''Z''' respektive '''Y'''.


Försök snabba upp traverseringen med pack bitmap-index, om ett sådant finns.
I standardläge har '''N''' och '''R''' båda en TREESAME-parent, så dessa kanter följs och övriga ignoreras. Resultatet blir:


Observera att när traversering görs med '''--objects''' kommer träd och blobbar inte att få sina tillhörande sökvägar utskrivna.
<pre>
 
        I---X
'''--progress='''<i><rubrik></i>
</pre>
 
Visa förloppsrapporter på standardfel medan objekt behandlas. Texten <i><rubrik></i> skrivs ut vid varje förloppsuppdatering.
 
'''-z'''


I stället för att utdata avgränsas med radbrytning avgränsas varje objekt och tillhörande metadata med NUL-byte.
Med '''--full-history''' vandrar Git varje kant. Då hittas '''A''', '''B''' och '''M''', men även merge-commitarna '''O''' och '''P'''. Med parent-omskrivning blir grafen:
 
Utdata skrivs i följande form:


<pre>
<pre>
<OID> NUL [<token>=<värde> NUL]...
          .-A---M--------N---O---P
        /    / \  \  \/  /  /
        I    B  \  R-'`--'  /
        \  /    \/        /
          \ /      /\        /
          `---X--'  `------'
</pre>
</pre>


Ytterligare objektmetadata, till exempel objektsökvägar eller gränsobjekt, skrivs med formen:
Mergarna '''O''' och '''P''' tillför här extra brus eftersom de inte faktiskt bidrog med en ändring till '''file.txt'''. De mergade bara topic branches som baserades på en äldre version av filen.
 
Med '''--simplify-merges''' försvinner '''O''' och '''P'''. Även '''N''' förenklas bort, vilket ger:


<pre>
<pre>
<token>=<värde>
          .-A---M--.
        /    /    \
        I    B      R
        \  /      /
          \ /      /
          `---X--'
</pre>
</pre>


Tokenvärden skrivs som de är, utan kodning eller trunkering. En OID-post innehåller aldrig tecknet '''=''' och används därför för att markera början på en ny objektpost.
Detta visar de viktiga enkel-parent-ändringarna '''A''', '''B''' och '''X''', samt mergen '''M''' och den mindre lyckade mergen '''R'''. Nackdelen är att '''--simplify-merges''' måste vandra hela commit-historiken innan ett enda resultat kan returneras, vilket kan vara dyrt i stora arkiv.


Exempel:
'''--show-pulls''' visar, utöver standardhistoriken, varje merge-commit som inte är TREESAME mot sin första parent men är TREESAME mot en senare parent. En sådan merge behandlas som om den “drog in” ändringen från en annan gren. I exemplet ger '''--show-pulls''' resultatet:


<pre>
<pre>
<OID> NUL
            I---X---R---N
<OID> NUL path=<sökväg> NUL
<OID> NUL boundary=yes NUL
<OID> NUL missing=yes NUL [<token>=<värde> NUL]...
</pre>
</pre>


Detta läge är endast kompatibelt med utdataflaggorna:
Med '''--show-pulls''' tillsammans med '''--simplify-merges''' ingår all nödvändig information:


<pre>
<pre>
--objects
              .-A---M--.  N
--boundary
            /    /    \ /
--missing
            I    B      R
            \  /      /
              \ /      /
              `---X--'
</pre>
</pre>


=== Historieförenkling ===
'''--simplify-by-decoration''' gör att man kan se den stora topologiska bilden genom att utelämna commitar som inte refereras av taggar. Commits markeras som !TREESAME om de refereras av taggar eller ändrar innehållet i sökvägarna som anges på kommandoraden. Alla andra commitar markeras som TREESAME och kan förenklas bort.


Ibland är man bara intresserad av delar av historiken, till exempel de commits som ändrar en viss <i><sökväg></i>. Historieförenkling består av två delar: dels vilka commits som väljs, dels hur historiken förenklas. Det finns flera strategier för detta.
=== Hjälpmedel för bisect ===


Följande flaggor väljer vilka commits som ska visas:
'''--bisect'''


<i><sökvägar></i>
Begränsa utdata till det commit-objekt som ligger ungefär halvvägs mellan inkluderade och exkluderade commitar. Den dåliga bisect-referensen '''refs/bisect/bad''' läggs till bland de inkluderade commitarna om den finns, och de goda bisect-referenserna '''refs/bisect/good-*''' läggs till bland de exkluderade om de finns.


Commits som ändrar de angivna sökvägarna väljs.
Om det inte finns några refs i '''refs/bisect/''' och:


'''--simplify-by-decoration'''
<pre>
$ git rev-list --bisect foo ^bar ^baz
</pre>


Commits som refereras av någon gren eller tagg väljs.
skriver ut <i>midpoint</i>, kommer följande två kommandon ge ungefär lika långa resultat:


Observera att extra commits kan visas för att ge en meningsfull historik.
<pre>
$ git rev-list foo ^midpoint
$ git rev-list midpoint ^bar ^baz
</pre>


Följande flaggor påverkar hur förenklingen utförs:
Att hitta ändringen som introducerade en regression reduceras därmed till en binär sökning.


'''Standardläge'''
'''--bisect-vars'''


Förenklar historiken till den enklaste historiken som förklarar trädets slutliga tillstånd. Den är "enklast" eftersom vissa sidogrenar beskärs om slutresultatet är detsamma, till exempel när grenar med samma innehåll slås samman.
Beräknar samma sak som '''--bisect''', men använder inte refs i '''refs/bisect/''' och skriver ut text som är färdig att evalueras av skalet. Raderna sätter variabler som '''bisect_rev''', '''bisect_nr''', '''bisect_good''', '''bisect_bad''' och '''bisect_all'''.


'''--show-pulls'''
'''--bisect-all'''


Ta med alla commits från standardläget, men även merge-commits som inte är TREESAME med första parent men är TREESAME med en senare parent. Detta läge är användbart för att visa de merge-commits som "först introducerade" en ändring till en gren.
Skriver ut alla commit-objekt mellan inkluderade och exkluderade commitar, sorterade efter avstånd till de inkluderade och exkluderade commitarna. De längst bort visas först. Detta är användbart när man vill välja en bra commit att testa men vill undvika vissa commitar, till exempel för att de inte kompilerar.


'''--full-history'''
Alternativet kan användas tillsammans med '''--bisect-vars'''. Då skrivs samma variabeltext som med '''--bisect-vars''' ut efter den sorterade commit-listan.


Samma som standardläget, men beskär inte viss historik.
=== Sortering av commitar ===


'''--dense'''
Som standard visas commitar i omvänd kronologisk ordning.


Endast de valda commitsen visas, plus vissa extra commits som behövs för att ge en meningsfull historik.
'''--date-order'''


'''--sparse'''
Visa inga parents innan alla deras children har visats, men visa i övrigt commitar i commit-tidsstämpelordning.


Alla commits i den förenklade historiken visas.
'''--author-date-order'''


'''--simplify-merges'''
Visa inga parents innan alla deras children har visats, men visa i övrigt commitar i författartidsstämpelordning.


Ytterligare flagga till '''--full-history''' för att ta bort vissa onödiga merges från den resulterande historiken, när inga valda commits bidrar till denna merge.
'''--topo-order'''


'''--ancestry-path'''['''='''<i><commit></i>]
Visa inga parents innan alla deras children har visats, och undvik att blanda commitar från flera historielinjer.


När ett intervall av commits ska visas, till exempel:
Exempel:


<pre>
<pre>
<commit1>..<commit2>
---1----2----4----7
    \              \
    3----5----6----8---
</pre>
</pre>


eller:
Där siffrorna anger commit-tidsstämpelordning, visar '''git rev-list''' med '''--date-order''' commitarna som:


<pre>
<pre>
<commit2> ^<commit1>
8 7 6 5 4 3 2 1
</pre>
</pre>


och en commit <i><commit></i> i intervallet anges, visas endast commits i intervallet som är förfäder till <i><commit></i>, ättlingar till <i><commit></i>, eller <i><commit></i> själv.
Med '''--topo-order''' kan resultatet bli:


Om ingen commit anges används <i><commit1></i>, alltså den exkluderade delen av intervallet, som <i><commit></i>.
<pre>
8 6 5 3 7 4 2 1
</pre>


Flaggan kan anges flera gånger. Om så sker inkluderas en commit om den är någon av de angivna commitsen, eller om den är förfader eller ättling till någon av dem.
eller:


'''--simplify-by-decoration'''
<pre>
8 7 4 2 6 5 3 1
</pre>


Flaggan '''--simplify-by-decoration''' gör det möjligt att bara se den stora bilden av historikens topologi genom att utelämna commits som inte refereras av taggar.
Vissa äldre commitar visas före nyare för att undvika att två parallella utvecklingsspår blandas ihop.


Commits markeras som '''!TREESAME''' — med andra ord behålls de efter reglerna för historieförenkling ovan — om:
'''--reverse'''


1. de refereras av taggar, eller
Skriv ut de valda commitarna i omvänd ordning. Kan inte kombineras med '''--walk-reflogs'''.
2. de ändrar innehållet i de sökvägar som anges på kommandoraden.


Alla andra commits markeras som '''TREESAME''' och kan därmed förenklas bort.
=== Objekttraversering ===


=== Hjälp för bisect ===
Dessa alternativ är främst avsedda för packning av Git-arkiv.


'''--bisect'''
'''--objects'''


Begränsa utdata till ett enda commit-objekt som ligger ungefär halvvägs mellan inkluderade och exkluderade commits.
Skriv ut objekt-ID för alla objekt som refereras av de listade commitarna. Exempelvis betyder '''--objects foo ^bar''': “skicka mig alla objekt-ID som jag behöver hämta om jag har commit-objektet '''bar''' men inte '''foo'''.” Se även '''--object-names'''.


Observera att den dåliga bisect-referensen:
'''--in-commit-order'''


<pre>
Skriv ut tree- och blob-ID i commit-ordning. Tree- och blob-ID skrivs ut efter att de först refererats av en commit.
refs/bisect/bad
</pre>


läggs till bland de inkluderade commitsen, om den finns. De goda bisect-referenserna:
'''--objects-edge'''


<pre>
Liknar '''--objects''', men skriver också ut ID för exkluderade commitar med prefixet '''-'''. Detta används av [[git-pack-objects(1)]] för att bygga ett “thin pack”.
refs/bisect/good-*
</pre>


läggs till bland de exkluderade commitsen, om de finns.
'''--objects-edge-aggressive'''


Om det inte finns några referenser i:
Liknar '''--objects-edge''', men försöker hårdare hitta exkluderade commitar, vilket kostar mer tid. Detta används för att bygga thin packs för shallow repositories.


<pre>
'''--indexed-objects'''
refs/bisect/
</pre>


och följande kommando:
Låtsas som om alla träd och blobbar som används av indexet angavs på kommandoraden. Vanligen vill man även använda '''--objects'''.


<pre>
'''--unpacked'''
$ git rev-list --bisect foo ^bar ^baz
</pre>


skriver ut <i>midpoint</i>, kommer följande två kommandon att ge utdata av ungefär samma längd:
Endast användbart med '''--objects'''. Skriv ut objekt-ID som inte finns i packfiler.


<pre>
'''--object-names'''
$ git rev-list foo ^midpoint
$ git rev-list midpoint ^bar ^baz
</pre>


Att hitta den ändring som introducerar en regression reduceras därmed till en binär sökning: generera och testa upprepade gånger nya "mittpunkter" tills commit-kedjan har längden ett.
Endast användbart med '''--objects'''. Skriv ut namnen på de objekt-ID som hittas. Detta är standard. Objektnamnet är tvetydigt och främst avsett som ledtråd vid packning av objekt. Det görs ingen skillnad mellan namn på taggar, träd och blobbar; sökvägar kan ändras för att ta bort radbrytningar; och om ett objekt skulle visas flera gånger med olika namn visas bara ett namn.


'''--bisect-vars'''
'''--no-object-names'''


Beräknar samma sak som '''--bisect''', men använder inte referenser i:
Endast användbart med '''--objects'''. Skriv inte ut namnen på objekt-ID som hittas. Detta inverterar '''--object-names''' och gör utdata enklare att tolka av kommandon som [[git-cat-file(1)]].


<pre>
'''--filter='''<i>&lt;filterspec&gt;</i>
refs/bisect/
</pre>


Dessutom skrivs text ut som är redo att köras med shellens '''eval'''.
Endast användbart med något av '''--objects*'''. Utelämnar objekt, vanligen blobbar, från listan över utskrivna objekt.


Raderna tilldelar:
Formen '''--filter=blob:none''' utelämnar alla blobbar.


'''bisect_rev'''
Formen '''--filter=blob:limit='''<i>&lt;n&gt;</i>['''kmg'''] utelämnar blobbar med storlek minst <i>&lt;n&gt;</i> byte eller enheter. <i>&lt;n&gt;</i> kan vara noll. Suffixen '''k''', '''m''' och '''g''' anger KiB, MiB respektive GiB.


Namnet på mittpunktsrevisionen.
Formen '''--filter=object:type='''('''tag'''|'''commit'''|'''tree'''|'''blob''') utelämnar alla objekt som inte är av den begärda typen. Observera att explicit angivna objekt ignorerar filter och alltid skrivs ut om inte '''--filter-provided-objects''' också anges.


'''bisect_nr'''
Formen '''--filter=sparse:oid='''<i>&lt;blob-ish&gt;</i> använder en sparse-checkout-specifikation i den angivna blobben eller blob-uttrycket för att utelämna blobbar som inte skulle behövas för en sparse checkout av de begärda referenserna.


Förväntat antal commits som återstår att testa efter att '''bisect_rev''' har testats.
Formen '''--filter=tree:'''<i>&lt;djup&gt;</i> utelämnar alla blobbar och träd vars djup från rotträdet är större än eller lika med <i>&lt;djup&gt;</i>. Djupet är minsta djup om ett objekt finns på flera djup i de traverserade commitarna.


'''bisect_good'''
* <i>&lt;djup&gt;</i>'''=0''' inkluderar inga träd eller blobbar om de inte anges explicit.
* <i>&lt;djup&gt;</i>'''=1''' inkluderar endast träd och blobbar som refereras direkt av en nåbar commit eller ett explicit angivet objekt.
* <i>&lt;djup&gt;</i>'''=2''' fungerar som 1 men inkluderar träd och blobbar ytterligare en nivå bort.


Förväntat antal commits som återstår att testa om '''bisect_rev''' visar sig vara god.
Formen '''--filter=sparse:path='''<i>&lt;sökväg&gt;</i>, som läste från en godtycklig filsystemssökväg, har tagits bort av säkerhetsskäl.


'''bisect_bad'''
Flera '''--filter='''-flaggor kan anges för att kombinera filter. Endast objekt som accepteras av alla filter inkluderas.


Förväntat antal commits som återstår att testa om '''bisect_rev''' visar sig vara dålig.
Formen '''--filter=combine:'''<i>&lt;filter1&gt;</i>'''+'''<i>&lt;filter2&gt;</i>'''+...'''<i>&lt;filterN&gt;</i> kan också användas, men är svårare än att upprepa '''--filter''' och behövs sällan. Filter separeras med '''+''' och individuella filter är %-kodade, ungefär som URL-kodning. Utöver '''+''' och '''%''' är flera specialtecken reserverade och måste kodas.


'''bisect_all'''
'''--no-filter'''


Antalet commits som för närvarande ingår i bisect-sökningen.
Stäng av tidigare '''--filter='''-argument.


'''--bisect-all'''
'''--filter-provided-objects'''


Skriver ut alla commit-objekt mellan inkluderade och exkluderade commits, sorterade efter deras avstånd till de inkluderade och exkluderade commitsen.
Filtrera även listan över explicit angivna objekt. Annars skrivs sådana objekt alltid ut även om de inte matchar filtren. Endast användbart med '''--filter='''.


Referenser i:
'''--filter-print-omitted'''


<pre>
Endast användbart med '''--filter='''. Skriv ut en lista över objekt som utelämnats av filtret. Objekt-ID får prefixet '''~'''.
refs/bisect/
</pre>


används inte.
'''--missing='''<i>&lt;åtgärd&gt;</i>


Den commit som ligger längst bort visas först. Det är denna enda commit som visas när '''--bisect''' används.
Ett felsökningsalternativ för framtida arbete med partial clone. Det anger hur saknade objekt hanteras.


Detta är användbart eftersom det gör det enkelt att välja en bra commit att testa när man av någon anledning vill undvika att testa vissa commits, till exempel om de inte kan kompileras.
'''--missing=error''' gör att '''rev-list''' stoppar med fel om ett saknat objekt påträffas. Detta är standard.


Flaggan kan användas tillsammans med '''--bisect-vars'''. I så fall skrivs samma text ut som med '''--bisect-vars''' efter alla sorterade commit-objekt.
'''--missing=allow-any''' tillåter objekttraverseringen att fortsätta om ett saknat objekt påträffas. Saknade objekt utelämnas tyst från resultatet.


=== Commit-sortering ===
'''--missing=allow-promisor''' liknar '''allow-any''', men tillåter endast förväntade promisor-saknade objekt. Oväntat saknade objekt ger fel.


Som standard visas commits i omvänd kronologisk ordning.
'''--missing=print''' liknar '''allow-any''', men skriver också ut en lista över saknade objekt. Objekt-ID får prefixet '''?'''.


'''--date-order'''
'''--missing=print-info''' liknar '''print''', men skriver även ut extra information om det saknade objektet, härledd från det innehållande objektet. Formen är:


Visa ingen parent före att alla dess children har visats, men visa i övrigt commits i ordning efter commit-tidsstämpel.
<pre>
?<oid> [<token>=<värde>]...
</pre>


'''--author-date-order'''
Tokenpar kan exempelvis vara:


Visa ingen parent före att alla dess children har visats, men visa i övrigt commits i ordning efter author-tidsstämpel.
* '''path='''<i>&lt;sökväg&gt;</i> — visar sökvägen för det saknade objektet, härledd från ett innehållande objekt. Sökvägar med blanksteg eller specialtecken skrivs vid behov med C-liknande citattecken.
* '''type='''<i>&lt;typ&gt;</i> — visar den saknade objektets typ, härledd från ett innehållande objekt.


'''--topo-order'''
Om vissa spetsar som skickas till traverseringen saknas betraktas de också som saknade och ignoreras. Om Git inte kan få deras objekt-ID uppstår dock ett fel.


Visa ingen parent före att alla dess children har visats, och undvik att blanda commits från flera parallella historiklinjer.
'''--exclude-promisor-objects'''


Exempel på commit-historik:
Endast för internt bruk. Förfiltrera objekttraversering vid promisor-gränsen. Detta används med partial clone och är starkare än '''--missing=allow-promisor''', eftersom det begränsar själva traverseringen i stället för att bara tysta fel om saknade objekt.


<pre>
'''--no-walk'''['''='''('''sorted'''|'''unsorted''')]
---1----2----4----7
    \              \
    3----5----6----8---
</pre>


där siffrorna anger commit-tidsstämplarnas ordning.
Visa endast de angivna commitarna, men vandra inte deras förfäder. Detta har ingen effekt om ett intervall anges. Med argumentet '''unsorted''' visas commitarna i den ordning de angavs på kommandoraden. Annars, med '''sorted''' eller utan argument, visas de i omvänd kronologisk ordning efter commit-tid. Kan inte kombineras med '''--graph'''.


Med '''git rev-list''' och liknande kommandon med '''--date-order''' visas commits i tidsstämpelordning:
'''--do-walk'''


<pre>
Åsidosätter ett tidigare '''--no-walk'''.
8 7 6 5 4 3 2 1
</pre>


Med '''--topo-order''' kan de i stället visas som:
=== Commit-formatering ===


<pre>
Med dessa alternativ beter sig [[git-rev-list(1)]] ungefär som de mer specialiserade commit-loggverktygen [[git-log(1)]], [[git-show(1)]] och [[git-whatchanged(1)]].
8 6 5 3 7 4 2 1
</pre>


eller:
'''--pretty'''['''='''<i>&lt;format&gt;</i>], '''--format='''<i>&lt;format&gt;</i>


<pre>
Skriv commit-loggar i ett visst format. <i>&lt;format&gt;</i> kan vara '''oneline''', '''short''', '''medium''', '''full''', '''fuller''', '''reference''', '''email''', '''raw''', '''format:'''<i>&lt;sträng&gt;</i> eller '''tformat:'''<i>&lt;sträng&gt;</i>. Om formatet inte är något av dessa men innehåller '''%'''<i>&lt;platshållare&gt;</i> fungerar det som om '''--pretty=tformat:'''<i>&lt;format&gt;</i> hade angivits.
8 7 4 2 6 5 3 1
</pre>


Det innebär att vissa äldre commits kan visas före nyare commits för att undvika att parallella utvecklingsspår blandas ihop.
Se avsnittet “PRETTY FORMATS” för mer information. Om '''='''<i>&lt;format&gt;</i> utelämnas används '''medium'''. Standardformat kan anges i arkivets konfiguration. Se [[git-config(1)]].


'''--reverse'''
'''--abbrev-commit'''


Skriv ut de valda commitsen i omvänd ordning.
Visa en unik förkortad prefixform av commit-objektnamnet i stället för hela det 40-byte långa hexadecimala namnet. '''--abbrev='''<i>&lt;n&gt;</i> kan användas för att ange minsta längd på prefixet.


Kan inte kombineras med '''--walk-reflogs'''.
'''--no-abbrev-commit'''


=== Objekttraversering ===
Visa hela det 40-byte långa hexadecimala commit-objektnamnet. Detta upphäver '''--abbrev-commit''', oavsett om det angavs explicit eller följde av alternativ som '''--oneline'''. Det åsidosätter även variabeln '''log.abbrevCommit'''.


Dessa flaggor är främst avsedda för packning av Git-arkiv.
'''--oneline'''


'''--objects'''
Kortform för:
 
Skriv ut objekt-ID:n för alla objekt som refereras av de listade commitsen.
 
Exempel:


<pre>
<pre>
--objects foo ^bar
--pretty=oneline --abbrev-commit
</pre>
</pre>


betyder ungefär: "ge mig alla objekt-ID:n som jag behöver ladda ner om jag har commit-objektet '''bar''' men inte '''foo'''".
'''--encoding='''<i>&lt;kodning&gt;</i>
 
Commit-objekt lagrar vilken teckenkodning som används för loggmeddelandet i sin encoding-header. Detta alternativ anger att commit-loggmeddelandet ska kodas om till användarens önskade kodning. För icke-plumbing-kommandon är standard UTF-8.


Se även '''--object-names''' nedan.
Om ett objekt säger sig vara kodat i '''X''' och Git skriver ut i '''X''' skrivs objektet ut ordagrant. Ogiltiga sekvenser i originalet kan därför kopieras till utdata. Om iconv(3) misslyckas med konverteringen skrivs också originalobjektet ut ordagrant.


'''--in-commit-order'''
'''--expand-tabs='''<i>&lt;n&gt;</i>, '''--expand-tabs''', '''--no-expand-tabs'''


Skriv ut träd- och blob-ID:n i commit-ordning. Träd- och blob-ID:n skrivs ut efter att de först refererats av en commit.
Expandera tabbar i loggmeddelandet före utskrift. Varje tab ersätts av tillräckligt många blanksteg för att nå nästa displaykolumn som är en multipel av <i>&lt;n&gt;</i>. '''--expand-tabs''' är kortform för '''--expand-tabs=8'''. '''--no-expand-tabs''' är kortform för '''--expand-tabs=0''' och stänger av tabbutökning.


'''--objects-edge'''
Som standard expanderas tabbar i pretty-format som indenterar loggmeddelandet med fyra blanksteg, alltså '''medium''', '''full''' och '''fuller'''.


Liknar '''--objects''', men skriver även ut ID:n för exkluderade commits med ett '''-''' framför.
'''--show-signature'''


Detta används av [[git-pack-objects(1)]] för att bygga ett "tunt" pack, där objekt lagras i deltaform baserat på objekt som finns i dessa exkluderade commits. Det minskar nätverkstrafiken.
Kontrollera giltigheten för ett signerat commit-objekt genom att skicka signaturen till '''gpg --verify''' och visa resultatet.


'''--objects-edge-aggressive'''
'''--relative-date'''


Liknar '''--objects-edge''', men försöker hårdare att hitta exkluderade commits, till priset av längre körningstid.
Synonym för '''--date=relative'''.


Detta används i stället för '''--objects-edge''' för att bygga tunna pack för grunda arkiv.
'''--date='''<i>&lt;format&gt;</i>


'''--indexed-objects'''
Påverkar endast datum som visas i människoläsbart format, till exempel med '''--pretty'''. Konfigurationsvariabeln '''log.date''' anger ett standardvärde för loggkommandots '''--date'''-alternativ. Som standard visas datum i den ursprungliga tidszonen, antingen committerens eller författarens.


Låtsas som om alla träd och blobbar som används av indexet angivits på kommandoraden.
'''--date=relative''' visar datum relativt aktuell tid, exempelvis “2 hours ago”.


Observera att man troligen även vill använda '''--objects'''.
'''--date=local''' visar datum i användarens lokala tidszon.


'''--unpacked'''
'''--date=iso''' eller '''--date=iso8601''' visar datum i ISO 8601-liknande format. Skillnaderna mot strikt ISO 8601 är bland annat att blanksteg används i stället för '''T''' mellan datum och tid, och att tidszonen skrivs utan kolon.


Endast användbar tillsammans med '''--objects'''. Skriv ut objekt-ID:n som inte finns i packfiler.
'''--date=iso-strict''' eller '''--date=iso8601-strict''' visar datum i strikt ISO 8601-format.


'''--object-names'''
'''--date=rfc''' eller '''--date=rfc2822''' visar datum i RFC 2822-format, vanligt i e-postmeddelanden.


Endast användbar tillsammans med '''--objects'''. Skriv ut namnen på de objekt-ID:n som hittas. Detta är standardbeteendet.
'''--date=short''' visar endast datumet i formatet '''YYYY-MM-DD'''.


Observera att "namnet" på varje objekt är tvetydigt och främst är avsett som en ledtråd vid packning av objekt.
'''--date=raw''' visar datum som sekunder sedan epoken följt av tidszonsförskjutningen.


I synnerhet gäller:
'''--date=human''' visar tidszonen om den inte matchar aktuell tidszon, och skriver inte ut hela datumet om det redan är tydligt. Exempelvis kan året utelämnas för datum under aktuellt år.


* ingen skillnad görs mellan namn på taggar, träd och blobbar,
'''--date=unix''' visar datum som Unix-epoktidsstämpel.
* sökvägsnamn kan ändras för att ta bort radbrytningar,
* om ett objekt förekommer flera gånger med olika namn visas endast ett namn.


'''--no-object-names'''
'''--date=format:'''<i>&lt;format&gt;</i> matar formatet till systemets '''strftime'''.


Endast användbar tillsammans med '''--objects'''. Skriv inte ut namnen på objekt-ID:n som hittas.
'''--date=format-local:'''<i>&lt;format&gt;</i> fungerar som '''format:''', men använder den lokala tidszonen.


Detta inverterar '''--object-names''' och gör utdata enklare att tolka för kommandon som [[git-cat-file(1)]].
'''--header'''


'''--filter='''<i><filter-spec></i>
Skriv ut commitens råa header före den formaterade utskriften.


Endast användbar tillsammans med någon av '''--objects'''-flaggorna. Utelämnar objekt, vanligen blobbar, från listan över utskrivna objekt.
'''--no-commit-header'''


<i><filter-spec></i> kan ha följande former:
Undertryck headerraden som innehåller '''commit''' och objekt-ID.


'''--filter=blob:none'''
'''--commit-header'''


Utelämnar alla blobbar.
Återaktivera headerraden som innehåller '''commit''' och objekt-ID efter ett tidigare '''--no-commit-header'''.


'''--filter=blob:limit='''<i><n></i>['''kmg''']
'''--parents'''


Utelämnar blobbar med storlek minst <i><n></i> byte eller enheter. <i><n></i> kan vara noll.
Skriv även ut parent-commitar. Aktiverar även parent-omskrivning i förenklad historik.


Suffixen '''k''', '''m''' och '''g''' kan användas för KiB, MiB eller GiB.
'''--children'''


Exempel:
Skriv även ut child-commitar. Aktiverar även parent-omskrivning i förenklad historik.


<pre>
'''--timestamp'''
blob:limit=1k
</pre>


är samma som:
Skriv ut rå commit-tidsstämpel före varje commit.


<pre>
'''--left-right'''
blob:limit=1024
</pre>


'''--filter=object:type='''('''tag'''|'''commit'''|'''tree'''|'''blob''')
Markera vilken sida av en symmetrisk differens en commit kan nås från. Commits från vänster sida får prefixet '''&lt;''', och commitar från höger sida får '''&gt;'''. Om '''--boundary''' används får boundary-commitar prefixet '''-'''.


Utelämnar alla objekt som inte är av den begärda typen.
'''--graph'''


Observera att uttryckligen angivna objekt ignorerar filter och alltid skrivs ut, om inte '''--filter-provided-objects''' också anges.
Rita en textbaserad graf över commit-historiken till vänster om utdata. Detta kan göra att extra rader skrivs ut för att grafhistoriken ska ritas korrekt. Kan inte kombineras med '''--no-walk'''.


'''--filter=sparse:oid='''<i><blob-ish></i>
'''--show-linear-break'''['''='''<i>&lt;barriär&gt;</i>]


Använder en sparse-checkout-specifikation som finns i blobben, eller blob-uttrycket, <i><blob-ish></i> för att utelämna blobbar som inte skulle krävas för en sparse checkout på de begärda referenserna.
När '''--graph''' inte används visas alla historikgrenar normalt hoptryckta, vilket kan göra det svårt att se att två på varandra följande commitar inte hör till en linjär gren. Detta alternativ infogar en barriär mellan sådana commitar. Om <i>&lt;barriär&gt;</i> anges används den strängen i stället för standardsträngen.


'''--filter=tree:'''<i><djup></i>
'''--count'''


Utelämnar alla blobbar och träd vars djup från rotträdet är större än eller lika med <i><djup></i>.
Skriv ut ett tal som anger hur många commitar som skulle ha listats, och undertryck övrig utdata. När det används tillsammans med '''--left-right''' skrivs antalet för vänster och höger sida separat. Tillsammans med '''--cherry-mark''' utelämnas patch-likvärdiga commitar från dessa antal och antalet likvärdiga commitar skrivs ut som ett tredje tal.


Om ett objekt finns på flera djup används minsta djup.
== PRETTY FORMATS ==


<pre>
Om commiten är en merge-commit, och om pretty-formatet inte är '''oneline''', '''email''' eller '''raw''', infogas en extra rad före raden '''Author:'''. Den raden börjar med '''Merge:''' och följs av hashvärdena för föräldra-commitarna, separerade med blanksteg. Observera att de commitar som listas inte nödvändigtvis är den direkta listan över parent-commitar om historiken har begränsats, till exempel om du bara visar ändringar som rör en viss katalog eller fil.
<djup>=0
</pre>


inkluderar inga träd eller blobbar, om de inte uttryckligen anges på kommandoraden eller via standard in när '''--stdin''' används.
Det finns flera inbyggda format, och du kan definiera egna format genom att sätta konfigurationsalternativet '''pretty.'''<i>&lt;namn&gt;</i> till antingen ett annat formatnamn eller till en '''format:'''-sträng enligt beskrivningen nedan. Se även [[git-config(1)]].


<pre>
Här är detaljerna för de inbyggda formaten:
<djup>=1
</pre>


inkluderar endast trädet och blobbarna som refereras direkt av en commit som kan nås från <i><commit></i>, eller från ett uttryckligen angivet objekt.
'''oneline'''


<pre>
<pre>
<djup>=2
<hash> <title-line>
</pre>
</pre>


är som <i><djup>=1</i>, men inkluderar även träd och blobbar ytterligare en nivå bort från en uttryckligen angiven commit eller ett uttryckligen angivet träd.
Detta format är avsett att vara så kompakt som möjligt.


Observera att formen:
'''short'''


<pre>
<pre>
--filter=sparse:path=<sökväg>
commit <hash>
Author: <author>
 
<title-line>
</pre>
</pre>


som ville läsa från en godtycklig sökväg i filsystemet har tagits bort av säkerhetsskäl.
'''medium'''


Flera '''--filter='''-flaggor kan anges för att kombinera filter. Endast objekt som accepteras av varje filter inkluderas.
<pre>
commit <hash>
Author: <author>
Date:  <author-date>


Formen:
<title-line>


<pre>
<full-commit-message>
--filter=combine:<filter1>+<filter2>+...+<filterN>
</pre>
</pre>


kan också användas för att kombinera flera filter, men detta är svårare än att bara upprepa '''--filter''' och är normalt inte nödvändigt.
'''full'''


Filter fogas samman med '''+''' och enskilda filter procentkodas, det vill säga URL-kodas.
<pre>
commit <hash>
Author: <author>
Commit: <committer>


Förutom '''+''' och '''%''' är följande tecken reserverade och måste också kodas:
<title-line>


<pre>
<full-commit-message>
~ ! @ # $ ^ & * ( ) [ ] { } ; " , < > ? ' `
</pre>
</pre>


samt alla tecken med ASCII-kod mindre än eller lika med:
'''fuller'''


<pre>
<pre>
0x20
commit <hash>
</pre>
Author:    <author>
AuthorDate: <author-date>
Commit:    <committer>
CommitDate: <committer-date>


vilket inkluderar mellanslag och radbrytning.
<title-line>


Andra godtyckliga tecken kan också kodas.
<full-commit-message>
</pre>


Exempelvis är följande likvärdiga:
'''reference'''


<pre>
<pre>
combine:tree:3+blob:none
<abbrev-hash> (<title-line>, <short-author-date>)
combine:tree%3A3+blob%3Anone
</pre>
</pre>


'''--no-filter'''
Detta format används för att hänvisa till en annan commit i ett commit-meddelande och motsvarar:


Stäng av tidigare angiven '''--filter='''-flagga.
<pre>
--pretty='format:%C(auto)%h (%s, %ad)'
</pre>


'''--filter-provided-objects'''
Som standard formateras datumet med '''--date=short''', om inget annat '''--date'''-alternativ uttryckligen anges. Precis som andra '''format:'''-strängar med platshållare påverkas utdata inte av andra alternativ som '''--decorate''' och '''--walk-reflogs'''.


Filtrera listan över uttryckligen angivna objekt. Dessa skrivs annars alltid ut även om de inte matchar något filter.
'''email'''


Endast användbar tillsammans med '''--filter='''.
<pre>
From <hash> <date>
From: <author>
Date: <author-date>
Subject: [PATCH] <title-line>


'''--filter-print-omitted'''
<full-commit-message>
</pre>


Endast användbar tillsammans med '''--filter='''. Skriver ut en lista över objekten som utelämnades av filtret. Objekt-ID:n får prefixet '''~'''.
'''mboxrd'''


'''--missing='''<i><åtgärd-för-saknat></i>
Som '''email''', men rader i commit-meddelandet som börjar med '''From ''' — eventuellt föregånget av ett eller flera '''>''' — citeras med '''>''' så att de inte misstolkas som början på en ny commit.


En felsökningsflagga som hjälper framtida utveckling av "partial clone". Den anger hur saknade objekt ska hanteras.
'''raw'''


'''--missing=error'''
Formatet '''raw''' visar hela commiten exakt som den är lagrad i commit-objektet. Hashvärden visas i full längd oavsett om '''--abbrev''' eller '''--no-abbrev''' används, och parent-information visar de verkliga parent-commitarna utan hänsyn till grafts eller historikförenkling. Observera att formatet påverkar hur commitar visas, men inte hur diffen visas, till exempel med '''git log --raw'''. Använd '''--no-abbrev''' för att få fullständiga objektnamn i raw-difformat.


Stoppa '''rev-list''' med fel om ett saknat objekt påträffas. Detta är standard.
'''format:'''<i>&lt;format-sträng&gt;</i>


'''--missing=allow-any'''
Formatet '''format:'''<i>&lt;format-sträng&gt;</i> låter dig ange exakt vilken information som ska visas. Det fungerar ungefär som '''printf'''-format, med den viktiga skillnaden att radbrytning skrivs som '''%n''' i stället för '''\n'''.


Tillåt objekttraversering att fortsätta om ett saknat objekt påträffas. Saknade objekt utelämnas tyst från resultatet.
Exempel:


'''--missing=allow-promisor'''
<pre>
format:"The author of %h was %an, %ar%nThe title was >>%s<<%n"
</pre>


Som '''allow-any''', men tillåt endast traversering att fortsätta för förväntade promisor-saknade objekt. Oväntade saknade objekt ger fel.
kan visa något i stil med:
 
'''--missing=print'''
 
Som '''allow-any''', men skriver också ut en lista över saknade objekt. Objekt-ID:n får prefixet '''?'''.
 
'''--missing=print-info'''
 
Som '''print''', men skriver även ut ytterligare information om det saknade objektet, härledd från det objekt som innehåller det.
 
Informationen skrivs på samma rad som det saknade objektets ID i formen:


<pre>
<pre>
?<oid> [<token>=<värde>]...
The author of fe6e0ee was Junio C Hamano, 23 hours ago
The title was >>t4119: test autocomputing -p<n> for traditional diff input.<<
</pre>
</pre>


Par av typen <i><token></i>=''''''<i><värde></i> separeras med mellanslag.
Följande platshållare är tillgängliga.


Värdet kodas på ett sätt som beror på token-typen, men mellanslag och radbrytningar i värdet förväntas alltid representeras så att resultatet inte innehåller någon av dessa problematiska byte.
=== Platshållare som utvidgas till ett enskilt bokstavstecken ===


Möjliga token-värden är bland annat:
'''%n'''


'''path='''<i><sökväg></i>
Radbrytning.


Visar sökvägen för det saknade objektet, härledd från ett innehållande objekt. En sökväg som innehåller mellanslag eller specialtecken omges med dubbla citattecken i C-stil vid behov.
'''%%'''


'''type='''<i><typ></i>
Ett rått procenttecken.


Visar typen för det saknade objektet, härledd från ett innehållande objekt.
'''%x00'''


Om vissa tips som skickas till traverseringen saknas, betraktas de också som saknade och traverseringen ignorerar dem. Om deras objekt-ID inte kan hämtas uppstår dock ett fel.
'''%x''' följt av två hexadecimala siffror ersätts med en byte med värdet från de hexadecimala siffrorna. I resten av dokumentet kallas detta för en bokstavlig formateringskod.


'''--exclude-promisor-objects'''
=== Platshållare som påverkar formateringen av efterföljande platshållare ===


Endast för internt bruk.
'''%Cred'''


Förfiltrerar objekttraversering vid promisor-gränsen. Detta används med partial clone.
Byt färg till rött.


Detta är starkare än '''--missing=allow-promisor''', eftersom det begränsar själva traverseringen i stället för att bara tysta fel om saknade objekt.
'''%Cgreen'''


'''--no-walk'''['''='''('''sorted'''|'''unsorted''')]
Byt färg till grönt.


Visa endast de angivna commitsen, men traversera inte deras förfäder.
'''%Cblue'''


Detta har ingen effekt om ett intervall anges.
Byt färg till blått.


Om argumentet '''unsorted''' anges visas commits i den ordning de gavs på kommandoraden.
'''%Creset'''


Annars, om '''sorted''' anges eller inget argument ges, visas commits i omvänd kronologisk ordning efter commit-tid.
Återställ färgen.


Kan inte kombineras med '''--graph'''.
'''%C('''<i>&lt;spec&gt;</i>''')'''


'''--do-walk'''
Färgspecifikation enligt beskrivningen av värden i avsnittet “CONFIGURATION FILE” i [[git-config(1)]]. Som standard visas färger endast när färgutdata är aktiverad för loggutdata. '''%C(always,'''<i>&lt;spec&gt;</i>''')''' visar färger även när färg annars inte är aktiverad. Ofta är '''--color=always''' ett bättre sätt att aktivera färg i hela utdata. '''%C(auto)''' aktiverar automatisk färgning för efterföljande platshållare tills färgen ändras igen.


Åsidosätter tidigare '''--no-walk'''.
'''%m'''


=== Commit-formatering ===
Vänster-, höger- eller gränsmarkering: '''&lt;''', '''&gt;''' eller '''-'''.


Med dessa flaggor kan [[git-rev-list(1)]] bete sig ungefär som den mer specialiserade familjen av commit-loggverktyg: [[git-log(1)]], [[git-show(1)]] och [[git-whatchanged(1)]].
'''%w('''[<i>&lt;w&gt;</i>[,<i>&lt;i1&gt;</i>[,<i>&lt;i2&gt;</i>]]]''')'''


'''--pretty'''['''='''<i><format></i>], '''--format='''<i><format></i>
Slå på radbrytning, på samma sätt som flaggan '''-w''' i [[git-shortlog(1)]].


Skriv ut innehållet i commit-loggarna i ett angivet format.
'''%&lt;('''<i>&lt;n&gt;</i>[,('''trunc'''|'''ltrunc'''|'''mtrunc''')]''')'''


<i><format></i> kan vara något av:
Låt nästa platshållare ta minst <i>&lt;n&gt;</i> kolumnbredder. Om det behövs fylls den ut med blanksteg till höger. Om utdata är längre än <i>&lt;n&gt;</i> kolumner kan den kortas av med ellipsen '''..''':


<pre>
<pre>
oneline
ltrunc  ..ft
short
mtrunc  mi..le
medium
trunc  rig..
full
fuller
reference
email
raw
format:<sträng>
tformat:<sträng>
</pre>
</pre>


Om <i><format></i> inte är något av formaten ovan, men innehåller:
Förkortning fungerar korrekt endast när <i>&lt;n&gt;</i> är minst 2. Breda tecken, exempelvis emoji, kan ta två kolumner och kombinerande tecken kan hamna fel vid utfyllnadsgränser.
 
'''%&lt;|('''<i>&lt;m&gt;</i>''')'''


<pre>
Låt nästa platshållare ta minst så många kolumner som behövs för att nå displaykolumn <i>&lt;m&gt;</i>. Om <i>&lt;m&gt;</i> är negativ räknas positionen från terminalfönstrets högra kant.
%<platshållare>
</pre>


behandlas det som om:
'''%&gt;('''<i>&lt;n&gt;</i>''')''', '''%&gt;|('''<i>&lt;m&gt;</i>''')'''


<pre>
Liknar '''%&lt;''' och '''%&lt;|''', men fyller ut med blanksteg till vänster.
--pretty=tformat:<format>
</pre>


hade angetts.
'''%&gt;&gt;('''<i>&lt;n&gt;</i>''')''', '''%&gt;&gt;|('''<i>&lt;m&gt;</i>''')'''


Se avsnittet '''PRETTY FORMATS''' för mer information om varje format.
Liknar '''%&gt;''' och '''%&gt;|''', men om nästa platshållare tar mer utrymme än angivet och det finns blanksteg till vänster om den, används dessa blanksteg.


Om delen:
'''%&gt;&lt;('''<i>&lt;n&gt;</i>''')''', '''%&gt;&lt;|('''<i>&lt;m&gt;</i>''')'''


<pre>
Liknar '''%&lt;''' och '''%&lt;|''', men fyller ut på båda sidor så att texten centreras.
=<format>
</pre>


utelämnas används formatet '''medium''' som standard.
=== Platshållare som utvidgas till information från commiten ===


Observera att standardformatet för pretty-utdata kan anges i arkivets konfiguration. Se [[git-config(1)]].
'''%H'''


'''--abbrev-commit'''
Commit-hash.


Visa en förkortad commit-hash i stället för hela objekt-ID:t på 40 hexadecimala tecken.
'''%h'''


Detta gör utdata lättare att läsa för människor.
Förkortad commit-hash.


'''--no-abbrev-commit'''
'''%T'''


Visa hela commit-objektets namn. Detta återställer effekten av '''--abbrev-commit''', antingen uttryckligen eller genom andra flaggor som '''--oneline'''.
Tree-hash.


'''--oneline'''
'''%t'''


En förkortning för:
Förkortad tree-hash.


<pre>
'''%P'''
--pretty=oneline --abbrev-commit
</pre>


Detta visar varje commit på en rad.
Parent-hashar.


'''--encoding='''<i><kodning></i>
'''%p'''


Commit-objekt lagrar den teckenkodning som används för loggmeddelandet i sin encoding-header. Denna flagga kan användas för att tala om för kommandot att loggmeddelanden ska kodas om till den kodning som användaren föredrar.
Förkortade parent-hashar.


För icke-plumbing-kommandon är standardvärdet UTF-8.
'''%an''', '''%aN'''


Observera att om ett objekt anger:
Författarens namn, respektive författarens namn med hänsyn till '''.mailmap'''. Se [[git-shortlog(1)]] eller [[git-blame(1)]].


<pre>
'''%ae''', '''%aE'''
encoding X
</pre>


och utdata begärs i samma kodning, skrivs objektet ut oförändrat.
Författarens e-postadress, respektive e-postadress med hänsyn till '''.mailmap'''.


Det betyder att ogiltiga sekvenser i den ursprungliga commiten kan kopieras till utdata om ingen omkodning sker.
'''%al''', '''%aL'''


'''--expand-tabs='''<i><n></i>, '''--expand-tabs''', '''--no-expand-tabs'''
Den lokala delen av författarens e-postadress, alltså delen före '''@''', respektive samma uppgift med hänsyn till '''.mailmap'''.


Utför tabbexpansion, det vill säga ersätt tabbar med mellanslag, i loggmeddelandet innan det visas.
'''%ad''', '''%aD''', '''%ar''', '''%at''', '''%ai''', '''%aI''', '''%as''', '''%ah'''


Med '''--expand-tabs''' används åtta kolumner som standard.
Författardatum i olika format: enligt '''--date='''<i>&lt;format&gt;</i>, RFC 2822, relativt, Unix-tidsstämpel, ISO 8601-liknande, strikt ISO 8601, kort format '''YYYY-MM-DD''' och mänskligt anpassat format.


'''--no-expand-tabs''' stänger av tabbexpansion.
'''%cn''', '''%cN'''


Som standard expanderas tabbar i pretty-format som drar in loggmeddelandet med fyra mellanslag, exempelvis:
Committer-namn, respektive committer-namn med hänsyn till '''.mailmap'''.


<pre>
'''%ce''', '''%cE'''
medium
full
fuller
</pre>


'''--notes'''['''='''<i><ref></i>]
Committer-e-postadress, respektive committer-e-postadress med hänsyn till '''.mailmap'''.


Visa notes som antecknar den aktuella commiten.
'''%cl''', '''%cL'''


Detta är standard för kommandon som kan visa notes, om inte '''--pretty=raw''' används.
Den lokala delen av committer-e-postadressen, respektive samma uppgift med hänsyn till '''.mailmap'''.


Standardinställningen kan ändras med konfigurationsvariabeln:
'''%cd''', '''%cD''', '''%cr''', '''%ct''', '''%ci''', '''%cI''', '''%cs''', '''%ch'''


<pre>
Committer-datum i olika format: enligt '''--date='''<i>&lt;format&gt;</i>, RFC 2822, relativt, Unix-tidsstämpel, ISO 8601-liknande, strikt ISO 8601, kort format '''YYYY-MM-DD''' och mänskligt anpassat format.
core.notesRef
</pre>


eller:
'''%d'''


<pre>
Ref-namn, på samma sätt som '''--decorate''' i [[git-log(1)]].
notes.displayRef
</pre>


Se [[git-config(1)]].
'''%D'''


'''--no-notes'''
Ref-namn utan omslutningen '''" ("''' och '''")"'''.


Visa inga notes.
'''%(decorate[:'''<i>&lt;alternativ&gt;</i>''',...])'''


Detta återställer effekten av tidigare '''--notes'''-flaggor.
Ref-namn med anpassade dekorationer. Alternativ kan styra '''prefix''', '''suffix''', '''separator''', '''pointer''' och '''tag'''. Standardvärden är bland annat '''" ("''', '''")"''', ''', '''', '''" → "''' och '''"tag: "'''. Om värden innehåller kommatecken eller avslutande parentes måste bokstavliga formateringskoder som '''%x2C''' och '''%x29''' användas.


'''--show-notes-by-default'''
Exempel:


Visa standard-notes, om ingen särskild notes-ref har angetts.
<pre>
%(decorate:prefix=,suffix=,tag=,separator= )
</pre>


'''--show-notes='''<i><ref></i>, '''--standard-notes'''
'''%(describe[:'''<i>&lt;alternativ&gt;</i>''',...])'''


Dessa flaggor är föråldrade synonymer för '''--notes''' respektive '''--notes=default'''.
Ett mänskligt läsbart namn, ungefär som [[git-describe(1)]]. För commitar som inte kan beskrivas blir resultatet en tom sträng. Alternativ kan bland annat vara '''tags''', '''abbrev='''<i>&lt;antal&gt;</i>, '''match='''<i>&lt;mönster&gt;</i> och '''exclude='''<i>&lt;mönster&gt;</i>.


'''--show-signature'''
'''%S'''


Kontrollera giltigheten hos ett signerat commit-objekt genom att skicka signaturen till:
Ref-namn som angavs på kommandoraden och som gjorde att commiten nåddes, ungefär som '''git log --source'''. Fungerar endast med '''git log'''.


<pre>
'''%e'''
gpg --verify
</pre>


och visa resultatet.
Kodning.


'''--relative-date'''
'''%s'''


Synonym för:
Ämnesrad.


<pre>
'''%f'''
--date=relative
</pre>


'''--date='''<i><format></i>
Sanerad ämnesrad, lämplig som filnamn.


Påverkar hur datum visas i flera pretty-format.
'''%b'''


Formatet '''relative''' visar datum relativt till aktuell tid, till exempel:
Brödtext.


<pre>
'''%B'''
2 hours ago
</pre>


Formatet '''local''' är ett alias för standardformatet, men använder den lokala tidszonen.
Rå brödtext, alltså ämnesrad och brödtext utan uppdelning.


Formatet '''iso''' eller '''iso8601''' visar datum i ett ISO 8601-liknande format.
'''%GG'''


Formatet '''iso-strict''' eller '''iso8601-strict''' visar datum i strikt ISO 8601-format.
Rå verifieringsmeddelande från GPG för en signerad commit.


Formatet '''rfc''' eller '''rfc2822''' visar datum i RFC 2822-format.
'''%G?'''


Formatet '''short''' visar endast datum, inte tid, i formen:
Visar status för signaturen:


<pre>
<pre>
YYYY-MM-DD
G  god och giltig signatur
B  dålig signatur
U  god signatur med okänd giltighet
X  god signatur som har gått ut
Y  god signatur skapad med en utgången nyckel
R  god signatur skapad med en återkallad nyckel
E  signaturen kan inte kontrolleras, exempelvis på grund av saknad nyckel
N  ingen signatur
</pre>
</pre>


Formatet '''raw''' visar datumet som sekunder sedan epoken, följt av tidszonsförskjutning.
'''%GS'''


Formatet '''human''' visar datum ett mänskligt anpassat sätt. Det kan utelämna vissa fält om de är uppenbara i sammanhanget, till exempel året om datumet är från aktuellt år.
Namnet den som signerade en signerad commit.


Formatet '''unix''' visar datum som Unix-tidsstämpel, alltså sekunder sedan 1970-01-01 00:00:00 UTC.
'''%GK'''


Formatet '''format:'''<i><sträng></i> matar formatsträngen till systemets '''strftime'''.
Nyckeln som användes för att signera en signerad commit.


Formatet '''default''' är standardformatet.
'''%GF'''


'''--parents'''
Fingeravtrycket för nyckeln som användes för att signera en signerad commit.


Skriv även ut parent-commits för varje commit.
'''%GP'''


Detta gör att utdata kan visa hur commit-grafen hänger ihop.
Fingeravtrycket för den primära nyckel vars undernyckel användes för att signera en signerad commit.
 
'''--children'''


Skriv även ut child-commits för varje commit.
'''%GT'''


'''--left-right'''
Tillitsnivån för nyckeln som användes för att signera en signerad commit.


Markera vilken sida av en symmetrisk skillnad en commit kan nås från.
'''%gD'''


Commits från vänster sida får prefixet:
Reflog-väljare, till exempel:


<pre>
<pre>
<
refs/stash@{1}
refs/stash@{2 minutes ago}
</pre>
</pre>


och commits från höger sida får prefixet:
'''%gd'''


<pre>
Förkortad reflog-väljare. Samma som '''%gD''', men ref-namndelen förkortas för att bli mer läsbar.
>
</pre>


Exempel:
'''%gn''', '''%gN'''


<pre>
Namn för reflog-identitet, respektive samma namn med hänsyn till '''.mailmap'''.
git rev-list --left-right A...B
</pre>


visar vilka commits som bara finns på A-sidan respektive B-sidan.
'''%ge''', '''%gE'''


'''--graph'''
E-postadress för reflog-identitet, respektive samma e-postadress med hänsyn till '''.mailmap'''.


Rita en textbaserad graf över commit-historiken till vänster om utdata.
'''%gs'''


Detta kan göra att extra rader skrivs ut mellan commits för att visa grafens grenar korrekt.
Reflog-ämne.


Kan inte kombineras med '''--no-walk'''.
'''%(trailers[:'''<i>&lt;alternativ&gt;</i>''',...])'''


'''--show-linear-break'''['''='''<i><barriär></i>]
Visar trailers från brödtexten så som de tolkas av [[git-interpret-trailers(1)]]. Alternativ kan bland annat vara:


När '''--graph''' inte används visas alla historikgrenar hopslagna i en enda linjär lista. Denna flagga lägger in en barriär mellan två efterföljande commits som inte hör ihop linjärt.
'''key='''<i>&lt;nyckel&gt;</i>


Om <i><barriär></i> anges används den texten som avskiljare. Annars används en standardbarriär.
Visa endast trailers med angiven nyckel. Matchningen är skiftlägesokänslig och avslutande kolon är valfritt. Detta aktiverar automatiskt '''only'''.


'''--count'''
'''only'''['''='''<i>&lt;bool&gt;</i>]


Skriv ut ett tal som anger hur många commits som skulle ha visats, i stället för att visa själva commitsen.
Välj om rader som inte är trailers i trailer-blocket ska tas med.


När '''--left-right''' används skrivs i stället antalet commits på vänster och höger sida, separerade med tabb.
'''separator='''<i>&lt;avskiljare&gt;</i>


När '''--cherry-mark''' används utelämnas patch-ekvivalenta commits från dessa antal och räknas i stället separat.
Anger avskiljaren mellan trailer-rader. Standard är radmatning. Använd '''%x2C''' om ett kommatecken ska ingå i avskiljaren.


=== Pretty formats ===
'''unfold'''['''='''<i>&lt;bool&gt;</i>]


Om commiten är en merge och pretty-formatet inte är '''oneline''', '''email''' eller '''raw''', skrivs en extra rad in före raden '''Author:'''.
Motsvarar att '''--unfold''' gavs till '''interpret-trailers'''.


Raden börjar med:
'''keyonly'''['''='''<i>&lt;bool&gt;</i>]


<pre>
Visa endast trailerns nyckel.
Merge:
</pre>


och följs av förkortade hashvärden för de parent-commits som visas.
'''valueonly'''['''='''<i>&lt;bool&gt;</i>]


Observera att de parent-commits som visas inte nödvändigtvis är de direkta parent-commitsen om historiken har begränsats, exempelvis om man bara visar ändringar som rör en viss katalog eller fil.
Visa endast trailerns värde.


Formaten har följande struktur:
'''key_value_separator='''<i>&lt;avskiljare&gt;</i>


'''oneline'''
Anger avskiljaren mellan nyckel och värde för varje trailer. Standard är '''": "'''.


<pre>
=== Anmärkningar om platshållare ===
<hash> <title-line>
</pre>


Detta är utformat för att vara så kompakt som möjligt.
Vissa platshållare beror på andra alternativ till revisionsgenomgångsmotorn. Exempelvis ger reflog-platshållarna '''%g*''' en tom sträng om Git inte går igenom reflog-poster.


'''short'''
Platshållarna '''%d''' och '''%D''' använder kort dekorationsformat om '''--decorate''' inte redan angavs.


<pre>
Booleska alternativ accepterar ett valfritt värde. Alla värden som accepteras av '''--type=bool''' i [[git-config(1)]], till exempel '''yes''' och '''off''', accepteras. Ett booleskt alternativ utan värde motsvarar '''=true'''.
commit <hash>
Author: <author>


<title-line>
Om du lägger till '''+''' efter '''%''' i en platshållare infogas en radmatning direkt före expansionen, men endast om platshållaren expanderas till en icke-tom sträng.
</pre>


'''medium'''
Om du lägger till '''-''' efter '''%''' i en platshållare tas alla sammanhängande radmatningar direkt före expansionen bort, men endast om platshållaren expanderas till en tom sträng.


<pre>
Om du lägger till ett blanksteg efter '''%''' i en platshållare infogas ett blanksteg direkt före expansionen, men endast om platshållaren expanderas till en icke-tom sträng.
commit <hash>
Author: <author>
Date:  <author-date>


<title-line>
=== tformat: ===


<full-commit-message>
Formatet '''tformat:''' fungerar exakt som '''format:''', förutom att det använder terminator-semantik i stället för separator-semantik. Varje commit får alltså ett avslutande tecken, vanligen en radbrytning, i stället för att separatorn bara placeras mellan poster.
</pre>


Detta är standardformatet.
Detta innebär att den sista posten i ett enradigt format avslutas korrekt med radbrytning, precis som formatet '''oneline'''.


'''full'''
Exempel med '''format:''':


<pre>
<pre>
commit <hash>
$ git log -2 --pretty=format:%h 4da45bef \
Author: <author>
  | perl -pe '$_ .= " -- NO NEWLINE\n" unless /\n/'
Commit: <committer>
4da45be
 
7134973 -- NO NEWLINE
<title-line>
 
<full-commit-message>
</pre>
</pre>


'''fuller'''
Med '''tformat:''':


<pre>
<pre>
commit <hash>
$ git log -2 --pretty=tformat:%h 4da45bef \
Author:     <author>
  | perl -pe '$_ .= " -- NO NEWLINE\n" unless /\n/'
AuthorDate: <author-date>
4da45be
Commit:    <committer>
7134973
CommitDate: <committer-date>
 
<title-line>
 
<full-commit-message>
</pre>
</pre>


'''reference'''
Dessutom tolkas en okänd sträng som innehåller '''%''' som om '''tformat:''' stod framför den. Följande två kommandon är därför likvärdiga:


<pre>
<pre>
<abbrev-hash> (<title-line>, <short-author-date>)
$ git log -2 --pretty=tformat:%h 4da45bef
$ git log -2 --pretty=%h 4da45bef
</pre>
</pre>


Detta format används för att hänvisa till en annan commit i ett commit-meddelande.
== EXEMPEL ==


Det motsvarar i praktiken:
Skriv ut listan över commitar som kan nås från den aktuella grenen.


<pre>
<pre>
--pretty='format:%C(auto)%h (%s, %ad)'
git rev-list HEAD
</pre>
</pre>


Som standard används:
Skriv ut listan över commitar på denna gren, men inte i upstream-grenen.


<pre>
<pre>
--date=short
git rev-list @{upstream}..HEAD
</pre>
</pre>


om ingen annan '''--date'''-flagga uttryckligen har angetts.
Formatera commitar med författare och commit-meddelande. Se även porcelain-kommandot [[git-log(1)]].
 
Precis som andra '''format:'''-format påverkas det inte av flaggor som '''--decorate''' och '''--walk-reflogs'''.
 
'''email'''


<pre>
<pre>
From <hash> <date>
git rev-list --format=medium HEAD
From: <author>
Date: <author-date>
Subject: [PATCH] <title-line>
 
<full-commit-message>
</pre>
</pre>


'''mboxrd'''
Formatera commitar tillsammans med deras diffar. Se även porcelain-kommandot [[git-log(1)]], som kan göra detta i en enda process.
 
Som '''email''', men rader i commit-meddelandet som börjar med:


<pre>
<pre>
From
git rev-list HEAD |
git diff-tree --stdin --format=medium -p
</pre>
</pre>


föregångna av noll eller flera:
Skriv ut listan över commitar på den aktuella grenen som rörde någon fil i katalogen '''Documentation'''.


<pre>
<pre>
>
git rev-list HEAD -- Documentation/
</pre>
</pre>


citeras med ytterligare:
Skriv ut listan över commitar som du har skapat under det senaste året, på valfri gren, tagg eller annan ref.


<pre>
<pre>
>
git rev-list --author=you@example.com --since=1.year.ago --all
</pre>
</pre>


så att de inte förväxlas med början på en ny commit.
Skriv ut listan över objekt som kan nås från den aktuella grenen, alltså alla commitar och de blobbar och träd som de innehåller.
 
'''raw'''
 
Formatet '''raw''' visar hela commiten exakt som den lagras i commit-objektet.
 
Hashvärden visas i full längd oavsett om '''--abbrev''' eller '''--no-abbrev''' används. Parent-informationen visar de verkliga parent-commitsen, utan att ta hänsyn till grafts eller historieförenkling.
 
Observera att detta format påverkar hur commits visas, men inte hur diffen visas, exempelvis med:


<pre>
<pre>
git log --raw
git rev-list --objects HEAD
</pre>
</pre>


För att få fullständiga objektnamn i rått diff-format används:
Jämför diskstorleken för alla nåbara objekt, objekt som kan nås från refloggar och den totala packade storleken. Detta kan visa om '''git repack -ad''' kan minska arkivets storlek genom att ta bort onåbara objekt, och om det kan hjälpa att rensa refloggar.


<pre>
<pre>
--no-abbrev
# nåbara objekt
git rev-list --disk-usage --objects --all
# plus refloggar
git rev-list --disk-usage --objects --all --reflog
# total använd diskstorlek
du -c .git/objects/pack/*.pack .git/objects/??/*
# alternativ till du: summera fälten "size" och "size-pack"
git count-objects -v
</pre>
</pre>


'''format:'''<i><format-sträng></i>
Rapportera diskstorleken för varje gren, utan objekt som används av den aktuella grenen. Detta kan hitta avvikande grenar som bidrar till att arkivet blivit onödigt stort, exempelvis om någon råkat checka in stora byggartefakter.
 
Formatet '''format:'''<i><format-sträng></i> låter dig själv ange vilken information som ska visas.
 
Det fungerar ungefär som '''printf''', med den viktiga skillnaden att radbrytning skrivs som:


<pre>
<pre>
%n
git for-each-ref --format='%(refname)' |
while read branch
do
        size=$(git rev-list --disk-usage --objects HEAD..$branch)
        echo "$size $branch"
done |
sort -n
</pre>
</pre>


i stället för:
Jämför storleken på disk för grenar i en grupp refs, men uteslut en annan grupp. Om du blandar objekt från flera remotes i ett enda arkiv kan detta visa vilka remotes som bidrar till arkivets storlek, med storleken för '''origin''' som baslinje.


<pre>
<pre>
\n
git rev-list --disk-usage --objects --remotes=$suspect --not --remotes=origin
</pre>
</pre>


Exempel:
== GIT ==
 
format:"Författaren till %h var %an, %ar%nTiteln var >>%s<<%n"
kan ge något i stil med:
 


Författaren till fe6e0ee var Junio C Hamano, 23 hours ago
Del av [[git(1)]]-sviten.
Titeln var >>t4119: test autocomputing -p<n> for traditional diff input.<<


= Sidslut =
== COLOPHON ==


Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/git-rev-list.1.html
Denna manualsida är en del av projektet '''git''', det distribuerade versionshanteringssystemet Git. Information om projektet finns på Git-projektets webbplats. För felrapporter om Git hänvisas till Git-projektets gemenskaps- och supportresurser.
Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på  
https://www.linux.se/kontaka-linux-se/
<BR><BR>Tack till [https://datorhjalp.se/web/datorhjalp-hemma// Datorhjälp hemma] som har  sponsrat [https://www.linux.se Linux.se] med webbhotell.


[[Kategori:Linuxmanual grupp 1]]
Den HTML-version som användes som källa anger att sidan hämtades från projektets upstream Git-repository den 2026-01-16. Vid det tillfället var den senaste commit som hittades i repositoryt daterad 2026-01-15. Sidans HTML-rendering skapades av Michael Kerrisk för man7.org.
[[Kategori:Linuxmanual]]

Versionen från 27 maj 2026 kl. 08.19

NAMN

git-rev-list - listar commit-objekt i omvänd kronologisk ordning

SYNOPSIS

git rev-list [<alternativ>] <commit>... [--] [<sökväg>...]

BESKRIVNING

git rev-list listar commitar som kan nås genom att följa parent-länkarna från de angivna commitarna, men utesluter commitar som kan nås från commitar som anges med ett ^ framför. Som standard skrivs resultatet ut i omvänd kronologisk ordning.

Man kan se detta som en mängdoperation. Commits som kan nås från någon av de commitar som anges på kommandoraden bildar en mängd. Därefter dras de commitar som kan nås från någon av de commitar som anges med ^ framför bort från mängden. De återstående commitarna är det som skrivs ut. Flera alternativ och sökvägsparametrar kan användas för att begränsa resultatet ytterligare.

Följande kommando:

$ git rev-list foo bar ^baz

betyder: lista alla commitar som kan nås från foo eller bar, men inte från baz.

Den särskilda notationen:

<commit1>..<commit2>

kan användas som kortform för:

^<commit1> <commit2>

Exempelvis är följande två kommandon likvärdiga:

$ git rev-list origin..HEAD
$ git rev-list HEAD ^origin

En annan särskild notation är:

<commit1>...<commit2>

Den är användbar vid merge-situationer. Resultatet blir den symmetriska differensen mellan de två operandernas commit-mängder. Följande två kommandon är likvärdiga:

$ git rev-list A B --not $(git merge-base --all A B)
$ git rev-list A...B

rev-list är ett grundläggande Git-kommando eftersom det kan bygga upp och traversera commit-historikens härkomstgrafer. Därför har kommandot många olika alternativ och används internt av så skilda kommandon som git-bisect(1) och git-repack(1).

ALTERNATIV

Begränsning av commitar

Förutom att ange ett commit-intervall med de särskilda notationer som beskrivs ovan kan ytterligare begränsningar användas.

Flera begränsningsalternativ snävar normalt in resultatet ytterligare. Exempelvis begränsar --since=<datum1> resultatet till commitar nyare än <datum1>, och om man dessutom använder --grep=<mönster> begränsas resultatet ytterligare till commitar vars loggmeddelande innehåller en rad som matchar <mönster>, om inget annat anges.

Observera att dessa begränsningar används före alternativ för sortering och formatering, till exempel --reverse.

-<antal>, -n <antal>, --max-count=<antal>

Begränsa utskriften till <antal> commitar.

--skip=<antal>

Hoppa över <antal> commitar innan utskriften börjar.

--since=<datum>, --after=<datum>

Visa commitar som är nyare än <datum>.

--since-as-filter=<datum>

Visa alla commitar som är nyare än <datum>. Till skillnad från --since besöks alla commitar i intervallet, i stället för att vandringen stoppas när den första äldre commiten hittas.

--until=<datum>, --before=<datum>

Visa commitar som är äldre än <datum>.

--max-age=<tidsstämpel>, --min-age=<tidsstämpel>

Begränsa de commitar som skrivs ut till ett angivet tidsintervall.

--author=<mönster>, --committer=<mönster>

Begränsa resultatet till commitar vars author- eller committer-rader matchar det reguljära uttrycket <mönster>. Om flera --author=<mönster> anges väljs commitar där författaren matchar något av mönstren. Samma princip gäller för flera --committer=<mönster>.

--grep-reflog=<mönster>

Begränsa resultatet till commitar med reflog-poster som matchar det reguljära uttrycket <mönster>. Om flera --grep-reflog anges väljs commitar vars reflog-meddelande matchar något av mönstren. Det är ett fel att använda detta alternativ utan --walk-reflogs.

--grep=<mönster>

Begränsa resultatet till commitar vars loggmeddelande matchar det reguljära uttrycket <mönster>. Om flera --grep=<mönster> anges väljs commitar vars meddelande matchar något av mönstren, men se även --all-match.

--all-match

Begränsa resultatet till commitar som matchar alla angivna --grep-mönster, i stället för minst ett.

--invert-grep

Begränsa resultatet till commitar vars loggmeddelande inte matchar mönstret som angavs med --grep=<mönster>.

-i, --regexp-ignore-case

Matcha de begränsande reguljära uttrycken utan hänsyn till versaler och gemener.

--basic-regexp

Tolka begränsningsmönstren som grundläggande reguljära uttryck. Detta är standard.

-E, --extended-regexp

Tolka begränsningsmönstren som utökade reguljära uttryck i stället för grundläggande reguljära uttryck.

-F, --fixed-strings

Tolka begränsningsmönstren som fasta strängar, inte som reguljära uttryck.

-P, --perl-regexp

Tolka begränsningsmönstren som Perl-kompatibla reguljära uttryck. Stöd för denna typ av uttryck är ett valfritt byggtidsberoende. Om Git inte kompilerades med stöd för dem avslutas kommandot med fel när alternativet används.

--remove-empty

Stoppa när en angiven sökväg försvinner från trädet.

--merges

Skriv endast ut merge-commitar. Detta är exakt samma sak som --min-parents=2.

--no-merges

Skriv inte ut commitar med fler än en parent. Detta är exakt samma sak som --max-parents=1.

--min-parents=<antal>, --max-parents=<antal>, --no-min-parents, --no-max-parents

Visa endast commitar som har minst respektive högst så många parent-commitar. Särskilt gäller att --max-parents=1 är samma sak som --no-merges, och --min-parents=2 är samma sak som --merges. --max-parents=0 ger alla rotcommitar, och --min-parents=3 ger alla octopus-mergar.

--no-min-parents och --no-max-parents återställer dessa gränser till ingen gräns. Likvärdiga former är --min-parents=0 och --max-parents=-1. Negativa tal betyder ingen övre gräns.

--first-parent

När commitar letas fram för inkludering följs endast första parent när en merge-commit påträffas. Detta kan ge en bättre översikt över utvecklingen av en viss topic branch, eftersom merge-commitar in i en sådan gren ofta bara handlar om att uppdatera mot upstream. Med detta alternativ kan man ignorera de enskilda commitar som drogs in i historiken genom en sådan merge.

--exclude-first-parent-only

När commitar letas fram för exkludering med ^ följs endast första parent när en merge-commit påträffas. Detta kan användas för att hitta ändringsmängden i en topic branch från punkten där den avvek från en remote branch, även om godtyckliga merge-commitar förekommer som legitima ändringar i topic-branchen.

--not

Vänder betydelsen av prefixet ^ — eller avsaknaden av det — för alla efterföljande revisionsangivelser fram till nästa --not. När alternativet används på kommandoraden före --stdin påverkas inte de revisioner som skickas via standard in. Omvänt påverkar --not som skickas via standard in inte de revisioner som angavs på kommandoraden.

--all

Låtsas som om alla refs i refs/, tillsammans med HEAD, angavs på kommandoraden som <commit>.

--branches[=<mönster>]

Låtsas som om alla refs i refs/heads angavs på kommandoraden som <commit>. Om <mönster> anges begränsas grenarna till de som matchar det givna shell-globmönstret. Om <mönster> saknar ?, * eller [ läggs /* implicit till i slutet.

--tags[=<mönster>]

Låtsas som om alla refs i refs/tags angavs på kommandoraden som <commit>. Om <mönster> anges begränsas taggarna till de som matchar det givna shell-globmönstret. Om mönstret saknar ?, * eller [ läggs /* implicit till i slutet.

--remotes[=<mönster>]

Låtsas som om alla refs i refs/remotes angavs på kommandoraden som <commit>. Om <mönster> anges begränsas remote-tracking-grenar till de som matchar det givna shell-globmönstret. Om mönstret saknar ?, * eller [ läggs /* implicit till i slutet.

--glob=<glob-mönster>

Låtsas som om alla refs som matchar shell-globmönstret <glob-mönster> angavs på kommandoraden som <commit>. Inledande refs/ läggs automatiskt till om det saknas. Om mönstret saknar ?, * eller [ läggs /* implicit till i slutet.

--exclude=<glob-mönster>

Ta inte med refs som matchar <glob-mönster> när nästa --all, --branches, --tags, --remotes eller --glob annars skulle ha tagit hänsyn till dem. Upprepningar av alternativet ackumulerar exkluderingsmönster fram till nästa sådant pseudo-ref-alternativ. Andra alternativ eller argument rensar inte de ackumulerade mönstren.

Mönster som anges bör inte börja med refs/heads, refs/tags eller refs/remotes när de används med --branches, --tags respektive --remotes. De måste däremot börja med refs/ när de används med --glob eller --all. Om ett avslutande /* är avsett måste det anges uttryckligen.

--exclude-hidden=(fetch|receive|uploadpack)

Ta inte med refs som skulle döljas av git-fetch, git-receive-pack eller git-upload-pack genom inställningarna fetch.hideRefs, receive.hideRefs eller uploadpack.hideRefs tillsammans med transfer.hideRefs. Se git-config(1). Alternativet påverkar nästa pseudo-ref-alternativ --all eller --glob och rensas därefter.

--reflog

Låtsas som om alla objekt som nämns i refloggar angavs på kommandoraden som <commit>.

--alternate-refs

Låtsas som om alla objekt som nämns som ref-spetsar i alternativa arkiv angavs på kommandoraden. Ett alternativt arkiv är ett arkiv vars objektkatalog anges i objects/info/alternates. Mängden inkluderade objekt kan ändras av exempelvis core.alternateRefsCommand. Se git-config(1).

--single-worktree

Som standard undersöks alla working trees när flera finns, för alternativ som --all, --reflog och --indexed-objects. Se git-worktree(1). Detta alternativ gör att endast aktuell working tree undersöks.

--ignore-missing

Om ett ogiltigt objektnamn påträffas i indata låtsas Git som om det inte hade angivits.

--stdin

Läs argument från standard in utöver argument från kommandoraden. Detta accepterar commitar och pseudoalternativ som --all och --glob=. När en ---avskiljare påträffas behandlas efterföljande indata som sökvägar som begränsar resultatet. Flaggor som --not som läses via standard in gäller endast argument som skickas på samma sätt och påverkar inte efterföljande kommandoradsargument.

--quiet

Skriv inget till standard ut. Denna form används främst för att låta anroparen kontrollera exitstatus för att avgöra om ett objektintervall är helt sammanhängande eller inte. Det är snabbare än att omdirigera standard ut till /dev/null, eftersom utdata inte behöver formateras.

--disk-usage, --disk-usage=human

Undertryck normal utdata och skriv i stället ut summan av byte som används för lagring på disk av de valda commitarna eller objekten. Detta motsvarar att skicka resultatet till:

git cat-file --batch-check='%(objectsize:disk)'

men körs mycket snabbare, särskilt med --use-bitmap-index. Se avsnittet CAVEATS i git-cat-file(1) för begränsningar kring vad “lagring på disk” betyder. Med det valfria värdet human visas storleken i ett människoläsbart format.

--cherry-mark

Som --cherry-pick, men markera likvärdiga commitar med = i stället för att utelämna dem, och icke-likvärdiga med +.

--cherry-pick

Utelämna commitar som introducerar samma ändring som en annan commit på den “andra sidan” när commit-mängden begränsas med symmetrisk differens.

Om man exempelvis har två grenar, A och B, är ett vanligt sätt att lista commitar som bara finns på ena sidan att använda --left-right. Det visar dock också commitar som cherry-pickats från den andra grenen. Med detta alternativ utesluts sådana commit-par.

--left-only, --right-only

Lista endast commitar på respektive sida av en symmetrisk differens, alltså endast de som skulle markeras med < respektive > av --left-right.

Exempelvis utelämnar --cherry-pick --right-only A...B de commitar från B som finns i A eller är patch-likvärdiga med en commit i A. Med andra ord listas +-commitarna från git cherry A B. Mer exakt ger --cherry-pick --right-only --no-merges exakt samma lista.

--cherry

En synonym för --right-only --cherry-mark --no-merges. Den är användbar för att begränsa resultatet till commitar på vår sida och markera de som redan har tillämpats på den andra sidan av en förgrenad historik, till exempel med:

git log --cherry upstream...mybranch

Det liknar:

git cherry upstream mybranch

-g, --walk-reflogs

I stället för att vandra i commit-härkomstens kedja vandras reflog-poster från den senaste till äldre poster. När detta alternativ används kan man inte ange commitar som ska exkluderas, det vill säga notationer som ^<commit>, <commit1>..<commit2> och <commit1>...<commit2> kan inte användas.

Med andra pretty-format än oneline och reference läggs två extra rader med information från refloggen till i utdata. Reflog-väljaren kan visas som ref@{<N>} eller som ref@{<tidsstämpel>}, beroende på reglerna nedan.

  1. Om startpunkten anges som ref@{<N>} visas indexformatet.
  2. Om startpunkten anges som ref@{now} visas tidsstämpelformatet.
  3. Om inget av detta användes men --date angavs visas tidsstämpeln i det format som begärdes av --date.
  4. Annars visas indexformatet.

Med --pretty=oneline placeras denna information som prefix på samma rad som commit-meddelandet. Alternativet kan inte kombineras med --reverse. Se även git-reflog(1). Med --pretty=reference visas inte denna information alls.

--merge

Visa commitar som rör konfliktsökvägar i intervallet HEAD...<annan>, där <annan> är den första existerande pseudorefen i MERGE_HEAD, CHERRY_PICK_HEAD, REVERT_HEAD eller REBASE_HEAD. Fungerar endast när indexet har omatchade merge-poster. Alternativet kan användas för att visa relevanta commitar när konflikter från en trevägsmerge löses.

--boundary

Skriv ut exkluderade gränscommitar. Gränscommitar får prefixet -.

--use-bitmap-index

Försök snabba upp traverseringen med pack-bitmap-indexet, om ett sådant finns. Observera att när traversering sker med --objects skrivs inte sökvägar för träd och blobbar ut.

--progress=<rubrik>

Visa förloppsrapporter på standard fel när objekt behandlas. Texten <rubrik> skrivs ut med varje förloppsuppdatering.

-z

I stället för att avgränsa objekt med radbrytning avgränsas varje utskrivet objekt och tillhörande metadata med NUL-byte. Utdata skrivs i formen:

<OID> NUL [<token>=<värde> NUL]...

Ytterligare objektmetadata, som objektsökvägar eller gränsobjekt, skrivs i formen <token>=<värde>. Tokenvärden skrivs som de är, utan kodning eller avkortning. En OID-post innehåller aldrig tecknet = och markerar därför början på en ny objektpost. Exempel:

<OID> NUL
<OID> NUL path=<sökväg> NUL
<OID> NUL boundary=yes NUL
<OID> NUL missing=yes NUL [<token>=<värde> NUL]...

Detta läge är endast kompatibelt med utdataalternativen --objects, --boundary och --missing.

Historikförenkling

Ibland är man bara intresserad av delar av historiken, till exempel commitar som ändrar en viss <sökväg>. Historikförenkling har två delar: dels vilka commitar som väljs ut, dels hur historiken förenklas. Det finns flera strategier.

Följande alternativ väljer vilka commitar som ska visas:

<sökvägar>

Commits som ändrar de angivna sökvägarna väljs.

--simplify-by-decoration

Commits som pekas ut av någon gren eller tagg väljs.

Observera att extra commitar kan visas för att ge en meningsfull historik.

Följande alternativ påverkar hur förenklingen utförs:

Standardläge

Förenklar historiken till den enklaste historik som förklarar trädets slutliga tillstånd. “Enklast” betyder att vissa sidogrenar beskärs om slutresultatet är detsamma, exempelvis vid merge av grenar med samma innehåll.

--show-pulls

Ta med alla commitar från standardläget, men även merge-commitar som inte är TREESAME mot första parent men är TREESAME mot en senare parent. Detta är användbart för att visa de merge-commitar som först introducerade en ändring till en gren.

--full-history

Samma som standardläge, men utan att beskära viss historik.

--dense

Endast de valda commitarna visas, plus sådana som behövs för en meningsfull historik.

--sparse

Alla commitar i den förenklade historiken visas.

--simplify-merges

Ytterligare alternativ till --full-history som tar bort onödiga merge-commitar från resultatet när det inte finns några valda commitar som bidrar till mergen.

--ancestry-path[=<commit>]

När ett intervall av commitar ska visas, till exempel <commit1>..<commit2> eller <commit2> ^<commit1>, och en commit <commit> finns i intervallet, visas endast commitar i intervallet som är förfäder till <commit>, ättlingar till <commit> eller <commit> själv. Om ingen commit anges används <commit1>, alltså den exkluderade delen av intervallet. Alternativet kan anges flera gånger; då inkluderas en commit om den är någon av de angivna commitarna eller är förfader eller ättling till någon av dem.

En mer detaljerad förklaring följer.

Anta att du angav foo som sökväg. Vi kallar commitar som ändrar foo för !TREESAME och övriga för TREESAME. I en diff filtrerad för foo ser de olika respektive lika ut.

Följande exempelhistorik används för att visa skillnaden mellan olika förenklingsinställningar. Vi antar att man filtrerar på filen foo i denna commitgraf:

          .-A---M---N---O---P---Q
         /     /   /   /   /   /
        I     B   C   D   E   Y
         \   /   /   /   /   /
          `-------------'   X

Den horisontella raden A---Q betraktas som första parent för varje merge. Commits är följande:

  • I är den initiala commiten där foo finns med innehållet asdf och filen quux finns med innehållet quux. Initiala commitar jämförs mot ett tomt träd, så I är !TREESAME.
  • I A innehåller foo bara foo.
  • B innehåller samma ändring som A. Dess merge M är trivial och därmed TREESAME mot alla parents.
  • C ändrar inte foo, men dess merge N ändrar den till foobar, så den är inte TREESAME mot någon parent.
  • D sätter foo till baz. Dess merge O kombinerar strängarna från N och D till foobarbaz, och är därför inte TREESAME mot någon parent.
  • E ändrar quux till xyzzy, och dess merge P kombinerar strängarna till quux xyzzy. P är TREESAME mot O, men inte mot E.
  • X är en oberoende rotcommit som lade till filen side, och Y ändrade den. Y är TREESAME mot X. Dess merge Q lade till side till P. Q är TREESAME mot P, men inte mot Y.

rev-list går bakåt genom historiken och inkluderar eller exkluderar commitar beroende på om --full-history och/eller parent-omskrivning via --parents eller --children används.

Standardläge

Commits inkluderas om de inte är TREESAME mot någon parent. Om commiten är en merge och är TREESAME mot en parent, följs endast den parenten. Om det finns flera TREESAME-parents följs bara en av dem. Annars följs alla parents.

Resultatet blir:

              .-A---N---O
             /     /   /
            I---------D

Regeln att bara följa en TREESAME-parent, om sådan finns, tog bort B helt från övervägande. C besöktes via N, men är TREESAME. Rotcommitar jämförs mot ett tomt träd, så I är !TREESAME.

--full-history utan parent-omskrivning

Detta skiljer sig från standardläget på en punkt: alla parents till en merge följs alltid, även om mergen är TREESAME mot någon av dem. Även om mer än en sida av mergen har commitar som inkluderas betyder det inte att själva mergen inkluderas. I exemplet blir resultatet:

I  A  B  N  D  O  P  Q

M exkluderades eftersom den är TREESAME mot båda parents. E, C och B vandrades alla, men bara B var !TREESAME.

--full-history med parent-omskrivning

Vanliga commitar inkluderas bara om de är !TREESAME, om inte detta ändras med exempelvis --sparse. Merges inkluderas alltid. Deras parent-listor skrivs däremot om: längs varje parent beskärs commitar som inte själva ingår. Resultatet blir:

              .-A---M---N---O---P---Q
             /     /   /   /   /
            I     B   /   D   /
             \   /   /   /   /
              `-------------'

Jämför med --full-history utan omskrivning. E beskars eftersom den är TREESAME, men parent-listan för P skrevs om till att innehålla E:s parent I. Samma sak hände för C och N, samt X, Y och Q.

--dense

Commits som vandras inkluderas om de inte är TREESAME mot någon parent.

--sparse

Alla commitar som vandras inkluderas. Observera att utan --full-history förenklas fortfarande merge-commitar: om en parent är TREESAME följs bara den, så de andra sidorna av mergen vandras aldrig.

--simplify-merges

Först byggs en historikgraf på samma sätt som --full-history med parent-omskrivning. Sedan förenklas varje commit C till sin ersättning C' i den slutliga historiken:

  • Sätt C' till C.
  • Ersätt varje parent P till C' med dess förenkling P'. Under processen tas parents bort om de är förfäder till andra parents, eller är rotcommitar som är TREESAME mot ett tomt träd. Dubbletter tas bort, men Git ser till att aldrig ta bort alla parents som commiten är TREESAME mot.
  • Om C' efter omskrivningen är en rotcommit eller merge-commit, en boundary-commit eller !TREESAME, behålls den. Annars ersätts den med sin enda parent.

Exemplet blir:

              .-A---M---N---O
             /     /       /
            I     B       D
             \   /       /
              `---------'

De viktiga skillnaderna mot --full-history med parent-omskrivning är bland annat att N:s parent-lista fick I borttagen eftersom den är förfader till den andra parenten M, att P togs bort eftersom den blev en TREESAME-commit med en enda parent, och att Q på motsvarande sätt förenklades bort.

--ancestry-path[=<commit>]

Begränsa de visade commitarna till de som är förfader till <commit>, ättling till <commit>, eller <commit> själv.

Exempel:

                D---E-------F
               /     \       \
              B---C---G---H---I---J
             /                     \
            A-------K---------------L--M

Ett vanligt D..M beräknar commitar som är förfäder till M men utesluter de som är förfäder till D. I exemplet blir det alla commitar utom A och B samt D själv.

Om man vill hitta vilka commitar i M som är förorenade av en bugg introducerad i D vill man kanske bara visa delen av D..M som faktiskt är ättlingar till D. Det gör --ancestry-path:

                    E-------F
                     \       \
                      G---H---I---J
                                   \
                                    L--M

Med --ancestry-path=H D..M blir resultatet:

                    E
                     \
                  C---G---H---I---J
                                   \
                                    L--M

Med --ancestry-path=K D..M blir resultatet:

                    K---------------L--M

--show-pulls

För att förstå --show-pulls används ett nytt exempel:

          .-A---M-----C--N---O---P
         /     / \  \  \/   /   /
        I     B   \  R-'`-Z'   /
         \   /     \/         /
          \ /      /\        /
           `---X--'  `---Y--'

Anta att I skapade file.txt, som ändrades av A, B och X på olika sätt. Commits C, Z och Y ändrar inte file.txt. Mergen M löste konflikten genom att inkludera ändringar från både A och B och är därför inte TREESAME mot någon av dem. Mergen R skapades däremot genom att ignorera innehållet i file.txt vid M och endast ta innehållet från X. Därför är R TREESAME mot X, men inte mot M. Mergen N tar naturligt innehållet från R, så N är TREESAME mot R, men inte mot C. Mergarna O och P är TREESAME mot sina första parents, men inte mot sina andra parents Z respektive Y.

I standardläge har N och R båda en TREESAME-parent, så dessa kanter följs och övriga ignoreras. Resultatet blir:

        I---X

Med --full-history vandrar Git varje kant. Då hittas A, B och M, men även merge-commitarna O och P. Med parent-omskrivning blir grafen:

          .-A---M--------N---O---P
         /     / \  \  \/   /   /
        I     B   \  R-'`--'   /
         \   /     \/         /
          \ /      /\        /
           `---X--'  `------'

Mergarna O och P tillför här extra brus eftersom de inte faktiskt bidrog med en ändring till file.txt. De mergade bara topic branches som baserades på en äldre version av filen.

Med --simplify-merges försvinner O och P. Även N förenklas bort, vilket ger:

          .-A---M--.
         /     /    \
        I     B      R
         \   /      /
          \ /      /
           `---X--'

Detta visar de viktiga enkel-parent-ändringarna A, B och X, samt mergen M och den mindre lyckade mergen R. Nackdelen är att --simplify-merges måste vandra hela commit-historiken innan ett enda resultat kan returneras, vilket kan vara dyrt i stora arkiv.

--show-pulls visar, utöver standardhistoriken, varje merge-commit som inte är TREESAME mot sin första parent men är TREESAME mot en senare parent. En sådan merge behandlas som om den “drog in” ändringen från en annan gren. I exemplet ger --show-pulls resultatet:

            I---X---R---N

Med --show-pulls tillsammans med --simplify-merges ingår all nödvändig information:

              .-A---M--.   N
             /     /    \ /
            I     B      R
             \   /      /
              \ /      /
               `---X--'

--simplify-by-decoration gör att man kan se den stora topologiska bilden genom att utelämna commitar som inte refereras av taggar. Commits markeras som !TREESAME om de refereras av taggar eller ändrar innehållet i sökvägarna som anges på kommandoraden. Alla andra commitar markeras som TREESAME och kan förenklas bort.

Hjälpmedel för bisect

--bisect

Begränsa utdata till det commit-objekt som ligger ungefär halvvägs mellan inkluderade och exkluderade commitar. Den dåliga bisect-referensen refs/bisect/bad läggs till bland de inkluderade commitarna om den finns, och de goda bisect-referenserna refs/bisect/good-* läggs till bland de exkluderade om de finns.

Om det inte finns några refs i refs/bisect/ och:

$ git rev-list --bisect foo ^bar ^baz

skriver ut midpoint, kommer följande två kommandon ge ungefär lika långa resultat:

$ git rev-list foo ^midpoint
$ git rev-list midpoint ^bar ^baz

Att hitta ändringen som introducerade en regression reduceras därmed till en binär sökning.

--bisect-vars

Beräknar samma sak som --bisect, men använder inte refs i refs/bisect/ och skriver ut text som är färdig att evalueras av skalet. Raderna sätter variabler som bisect_rev, bisect_nr, bisect_good, bisect_bad och bisect_all.

--bisect-all

Skriver ut alla commit-objekt mellan inkluderade och exkluderade commitar, sorterade efter avstånd till de inkluderade och exkluderade commitarna. De längst bort visas först. Detta är användbart när man vill välja en bra commit att testa men vill undvika vissa commitar, till exempel för att de inte kompilerar.

Alternativet kan användas tillsammans med --bisect-vars. Då skrivs samma variabeltext som med --bisect-vars ut efter den sorterade commit-listan.

Sortering av commitar

Som standard visas commitar i omvänd kronologisk ordning.

--date-order

Visa inga parents innan alla deras children har visats, men visa i övrigt commitar i commit-tidsstämpelordning.

--author-date-order

Visa inga parents innan alla deras children har visats, men visa i övrigt commitar i författartidsstämpelordning.

--topo-order

Visa inga parents innan alla deras children har visats, och undvik att blanda commitar från flera historielinjer.

Exempel:

---1----2----4----7
    \              \
     3----5----6----8---

Där siffrorna anger commit-tidsstämpelordning, visar git rev-list med --date-order commitarna som:

8 7 6 5 4 3 2 1

Med --topo-order kan resultatet bli:

8 6 5 3 7 4 2 1

eller:

8 7 4 2 6 5 3 1

Vissa äldre commitar visas före nyare för att undvika att två parallella utvecklingsspår blandas ihop.

--reverse

Skriv ut de valda commitarna i omvänd ordning. Kan inte kombineras med --walk-reflogs.

Objekttraversering

Dessa alternativ är främst avsedda för packning av Git-arkiv.

--objects

Skriv ut objekt-ID för alla objekt som refereras av de listade commitarna. Exempelvis betyder --objects foo ^bar: “skicka mig alla objekt-ID som jag behöver hämta om jag har commit-objektet bar men inte foo.” Se även --object-names.

--in-commit-order

Skriv ut tree- och blob-ID i commit-ordning. Tree- och blob-ID skrivs ut efter att de först refererats av en commit.

--objects-edge

Liknar --objects, men skriver också ut ID för exkluderade commitar med prefixet -. Detta används av git-pack-objects(1) för att bygga ett “thin pack”.

--objects-edge-aggressive

Liknar --objects-edge, men försöker hårdare hitta exkluderade commitar, vilket kostar mer tid. Detta används för att bygga thin packs för shallow repositories.

--indexed-objects

Låtsas som om alla träd och blobbar som används av indexet angavs på kommandoraden. Vanligen vill man även använda --objects.

--unpacked

Endast användbart med --objects. Skriv ut objekt-ID som inte finns i packfiler.

--object-names

Endast användbart med --objects. Skriv ut namnen på de objekt-ID som hittas. Detta är standard. Objektnamnet är tvetydigt och främst avsett som ledtråd vid packning av objekt. Det görs ingen skillnad mellan namn på taggar, träd och blobbar; sökvägar kan ändras för att ta bort radbrytningar; och om ett objekt skulle visas flera gånger med olika namn visas bara ett namn.

--no-object-names

Endast användbart med --objects. Skriv inte ut namnen på objekt-ID som hittas. Detta inverterar --object-names och gör utdata enklare att tolka av kommandon som git-cat-file(1).

--filter=<filterspec>

Endast användbart med något av --objects*. Utelämnar objekt, vanligen blobbar, från listan över utskrivna objekt.

Formen --filter=blob:none utelämnar alla blobbar.

Formen --filter=blob:limit=<n>[kmg] utelämnar blobbar med storlek minst <n> byte eller enheter. <n> kan vara noll. Suffixen k, m och g anger KiB, MiB respektive GiB.

Formen --filter=object:type=(tag|commit|tree|blob) utelämnar alla objekt som inte är av den begärda typen. Observera att explicit angivna objekt ignorerar filter och alltid skrivs ut om inte --filter-provided-objects också anges.

Formen --filter=sparse:oid=<blob-ish> använder en sparse-checkout-specifikation i den angivna blobben eller blob-uttrycket för att utelämna blobbar som inte skulle behövas för en sparse checkout av de begärda referenserna.

Formen --filter=tree:<djup> utelämnar alla blobbar och träd vars djup från rotträdet är större än eller lika med <djup>. Djupet är minsta djup om ett objekt finns på flera djup i de traverserade commitarna.

  • <djup>=0 inkluderar inga träd eller blobbar om de inte anges explicit.
  • <djup>=1 inkluderar endast träd och blobbar som refereras direkt av en nåbar commit eller ett explicit angivet objekt.
  • <djup>=2 fungerar som 1 men inkluderar träd och blobbar ytterligare en nivå bort.

Formen --filter=sparse:path=<sökväg>, som läste från en godtycklig filsystemssökväg, har tagits bort av säkerhetsskäl.

Flera --filter=-flaggor kan anges för att kombinera filter. Endast objekt som accepteras av alla filter inkluderas.

Formen --filter=combine:<filter1>+<filter2>+...<filterN> kan också användas, men är svårare än att upprepa --filter och behövs sällan. Filter separeras med + och individuella filter är %-kodade, ungefär som URL-kodning. Utöver + och % är flera specialtecken reserverade och måste kodas.

--no-filter

Stäng av tidigare --filter=-argument.

--filter-provided-objects

Filtrera även listan över explicit angivna objekt. Annars skrivs sådana objekt alltid ut även om de inte matchar filtren. Endast användbart med --filter=.

--filter-print-omitted

Endast användbart med --filter=. Skriv ut en lista över objekt som utelämnats av filtret. Objekt-ID får prefixet ~.

--missing=<åtgärd>

Ett felsökningsalternativ för framtida arbete med partial clone. Det anger hur saknade objekt hanteras.

--missing=error gör att rev-list stoppar med fel om ett saknat objekt påträffas. Detta är standard.

--missing=allow-any tillåter objekttraverseringen att fortsätta om ett saknat objekt påträffas. Saknade objekt utelämnas tyst från resultatet.

--missing=allow-promisor liknar allow-any, men tillåter endast förväntade promisor-saknade objekt. Oväntat saknade objekt ger fel.

--missing=print liknar allow-any, men skriver också ut en lista över saknade objekt. Objekt-ID får prefixet ?.

--missing=print-info liknar print, men skriver även ut extra information om det saknade objektet, härledd från det innehållande objektet. Formen är:

?<oid> [<token>=<värde>]...

Tokenpar kan exempelvis vara:

  • path=<sökväg> — visar sökvägen för det saknade objektet, härledd från ett innehållande objekt. Sökvägar med blanksteg eller specialtecken skrivs vid behov med C-liknande citattecken.
  • type=<typ> — visar den saknade objektets typ, härledd från ett innehållande objekt.

Om vissa spetsar som skickas till traverseringen saknas betraktas de också som saknade och ignoreras. Om Git inte kan få deras objekt-ID uppstår dock ett fel.

--exclude-promisor-objects

Endast för internt bruk. Förfiltrera objekttraversering vid promisor-gränsen. Detta används med partial clone och är starkare än --missing=allow-promisor, eftersom det begränsar själva traverseringen i stället för att bara tysta fel om saknade objekt.

--no-walk[=(sorted|unsorted)]

Visa endast de angivna commitarna, men vandra inte deras förfäder. Detta har ingen effekt om ett intervall anges. Med argumentet unsorted visas commitarna i den ordning de angavs på kommandoraden. Annars, med sorted eller utan argument, visas de i omvänd kronologisk ordning efter commit-tid. Kan inte kombineras med --graph.

--do-walk

Åsidosätter ett tidigare --no-walk.

Commit-formatering

Med dessa alternativ beter sig git-rev-list(1) ungefär som de mer specialiserade commit-loggverktygen git-log(1), git-show(1) och git-whatchanged(1).

--pretty[=<format>], --format=<format>

Skriv commit-loggar i ett visst format. <format> kan vara oneline, short, medium, full, fuller, reference, email, raw, format:<sträng> eller tformat:<sträng>. Om formatet inte är något av dessa men innehåller %<platshållare> fungerar det som om --pretty=tformat:<format> hade angivits.

Se avsnittet “PRETTY FORMATS” för mer information. Om =<format> utelämnas används medium. Standardformat kan anges i arkivets konfiguration. Se git-config(1).

--abbrev-commit

Visa en unik förkortad prefixform av commit-objektnamnet i stället för hela det 40-byte långa hexadecimala namnet. --abbrev=<n> kan användas för att ange minsta längd på prefixet.

--no-abbrev-commit

Visa hela det 40-byte långa hexadecimala commit-objektnamnet. Detta upphäver --abbrev-commit, oavsett om det angavs explicit eller följde av alternativ som --oneline. Det åsidosätter även variabeln log.abbrevCommit.

--oneline

Kortform för:

--pretty=oneline --abbrev-commit

--encoding=<kodning>

Commit-objekt lagrar vilken teckenkodning som används för loggmeddelandet i sin encoding-header. Detta alternativ anger att commit-loggmeddelandet ska kodas om till användarens önskade kodning. För icke-plumbing-kommandon är standard UTF-8.

Om ett objekt säger sig vara kodat i X och Git skriver ut i X skrivs objektet ut ordagrant. Ogiltiga sekvenser i originalet kan därför kopieras till utdata. Om iconv(3) misslyckas med konverteringen skrivs också originalobjektet ut ordagrant.

--expand-tabs=<n>, --expand-tabs, --no-expand-tabs

Expandera tabbar i loggmeddelandet före utskrift. Varje tab ersätts av tillräckligt många blanksteg för att nå nästa displaykolumn som är en multipel av <n>. --expand-tabs är kortform för --expand-tabs=8. --no-expand-tabs är kortform för --expand-tabs=0 och stänger av tabbutökning.

Som standard expanderas tabbar i pretty-format som indenterar loggmeddelandet med fyra blanksteg, alltså medium, full och fuller.

--show-signature

Kontrollera giltigheten för ett signerat commit-objekt genom att skicka signaturen till gpg --verify och visa resultatet.

--relative-date

Synonym för --date=relative.

--date=<format>

Påverkar endast datum som visas i människoläsbart format, till exempel med --pretty. Konfigurationsvariabeln log.date anger ett standardvärde för loggkommandots --date-alternativ. Som standard visas datum i den ursprungliga tidszonen, antingen committerens eller författarens.

--date=relative visar datum relativt aktuell tid, exempelvis “2 hours ago”.

--date=local visar datum i användarens lokala tidszon.

--date=iso eller --date=iso8601 visar datum i ISO 8601-liknande format. Skillnaderna mot strikt ISO 8601 är bland annat att blanksteg används i stället för T mellan datum och tid, och att tidszonen skrivs utan kolon.

--date=iso-strict eller --date=iso8601-strict visar datum i strikt ISO 8601-format.

--date=rfc eller --date=rfc2822 visar datum i RFC 2822-format, vanligt i e-postmeddelanden.

--date=short visar endast datumet i formatet YYYY-MM-DD.

--date=raw visar datum som sekunder sedan epoken följt av tidszonsförskjutningen.

--date=human visar tidszonen om den inte matchar aktuell tidszon, och skriver inte ut hela datumet om det redan är tydligt. Exempelvis kan året utelämnas för datum under aktuellt år.

--date=unix visar datum som Unix-epoktidsstämpel.

--date=format:<format> matar formatet till systemets strftime.

--date=format-local:<format> fungerar som format:, men använder den lokala tidszonen.

--header

Skriv ut commitens råa header före den formaterade utskriften.

--no-commit-header

Undertryck headerraden som innehåller commit och objekt-ID.

--commit-header

Återaktivera headerraden som innehåller commit och objekt-ID efter ett tidigare --no-commit-header.

--parents

Skriv även ut parent-commitar. Aktiverar även parent-omskrivning i förenklad historik.

--children

Skriv även ut child-commitar. Aktiverar även parent-omskrivning i förenklad historik.

--timestamp

Skriv ut rå commit-tidsstämpel före varje commit.

--left-right

Markera vilken sida av en symmetrisk differens en commit kan nås från. Commits från vänster sida får prefixet <, och commitar från höger sida får >. Om --boundary används får boundary-commitar prefixet -.

--graph

Rita en textbaserad graf över commit-historiken till vänster om utdata. Detta kan göra att extra rader skrivs ut för att grafhistoriken ska ritas korrekt. Kan inte kombineras med --no-walk.

--show-linear-break[=<barriär>]

När --graph inte används visas alla historikgrenar normalt hoptryckta, vilket kan göra det svårt att se att två på varandra följande commitar inte hör till en linjär gren. Detta alternativ infogar en barriär mellan sådana commitar. Om <barriär> anges används den strängen i stället för standardsträngen.

--count

Skriv ut ett tal som anger hur många commitar som skulle ha listats, och undertryck övrig utdata. När det används tillsammans med --left-right skrivs antalet för vänster och höger sida separat. Tillsammans med --cherry-mark utelämnas patch-likvärdiga commitar från dessa antal och antalet likvärdiga commitar skrivs ut som ett tredje tal.

PRETTY FORMATS

Om commiten är en merge-commit, och om pretty-formatet inte är oneline, email eller raw, infogas en extra rad före raden Author:. Den raden börjar med Merge: och följs av hashvärdena för föräldra-commitarna, separerade med blanksteg. Observera att de commitar som listas inte nödvändigtvis är den direkta listan över parent-commitar om historiken har begränsats, till exempel om du bara visar ändringar som rör en viss katalog eller fil.

Det finns flera inbyggda format, och du kan definiera egna format genom att sätta konfigurationsalternativet pretty.<namn> till antingen ett annat formatnamn eller till en format:-sträng enligt beskrivningen nedan. Se även git-config(1).

Här är detaljerna för de inbyggda formaten:

oneline

<hash> <title-line>

Detta format är avsett att vara så kompakt som möjligt.

short

commit <hash>
Author: <author>

<title-line>

medium

commit <hash>
Author: <author>
Date:   <author-date>

<title-line>

<full-commit-message>

full

commit <hash>
Author: <author>
Commit: <committer>

<title-line>

<full-commit-message>

fuller

commit <hash>
Author:     <author>
AuthorDate: <author-date>
Commit:     <committer>
CommitDate: <committer-date>

<title-line>

<full-commit-message>

reference

<abbrev-hash> (<title-line>, <short-author-date>)

Detta format används för att hänvisa till en annan commit i ett commit-meddelande och motsvarar:

--pretty='format:%C(auto)%h (%s, %ad)'

Som standard formateras datumet med --date=short, om inget annat --date-alternativ uttryckligen anges. Precis som andra format:-strängar med platshållare påverkas utdata inte av andra alternativ som --decorate och --walk-reflogs.

email

From <hash> <date>
From: <author>
Date: <author-date>
Subject: [PATCH] <title-line>

<full-commit-message>

mboxrd

Som email, men rader i commit-meddelandet som börjar med From — eventuellt föregånget av ett eller flera > — citeras med > så att de inte misstolkas som början på en ny commit.

raw

Formatet raw visar hela commiten exakt som den är lagrad i commit-objektet. Hashvärden visas i full längd oavsett om --abbrev eller --no-abbrev används, och parent-information visar de verkliga parent-commitarna utan hänsyn till grafts eller historikförenkling. Observera att formatet påverkar hur commitar visas, men inte hur diffen visas, till exempel med git log --raw. Använd --no-abbrev för att få fullständiga objektnamn i raw-difformat.

format:<format-sträng>

Formatet format:<format-sträng> låter dig ange exakt vilken information som ska visas. Det fungerar ungefär som printf-format, med den viktiga skillnaden att radbrytning skrivs som %n i stället för \n.

Exempel:

format:"The author of %h was %an, %ar%nThe title was >>%s<<%n"

kan visa något i stil med:

The author of fe6e0ee was Junio C Hamano, 23 hours ago
The title was >>t4119: test autocomputing -p<n> for traditional diff input.<<

Följande platshållare är tillgängliga.

Platshållare som utvidgas till ett enskilt bokstavstecken

%n

Radbrytning.

%%

Ett rått procenttecken.

%x00

%x följt av två hexadecimala siffror ersätts med en byte med värdet från de hexadecimala siffrorna. I resten av dokumentet kallas detta för en bokstavlig formateringskod.

Platshållare som påverkar formateringen av efterföljande platshållare

%Cred

Byt färg till rött.

%Cgreen

Byt färg till grönt.

%Cblue

Byt färg till blått.

%Creset

Återställ färgen.

%C(<spec>)

Färgspecifikation enligt beskrivningen av värden i avsnittet “CONFIGURATION FILE” i git-config(1). Som standard visas färger endast när färgutdata är aktiverad för loggutdata. %C(always,<spec>) visar färger även när färg annars inte är aktiverad. Ofta är --color=always ett bättre sätt att aktivera färg i hela utdata. %C(auto) aktiverar automatisk färgning för efterföljande platshållare tills färgen ändras igen.

%m

Vänster-, höger- eller gränsmarkering: <, > eller -.

%w([<w>[,<i1>[,<i2>]]])

Slå på radbrytning, på samma sätt som flaggan -w i git-shortlog(1).

%<(<n>[,(trunc|ltrunc|mtrunc)])

Låt nästa platshållare ta minst <n> kolumnbredder. Om det behövs fylls den ut med blanksteg till höger. Om utdata är längre än <n> kolumner kan den kortas av med ellipsen ..:

ltrunc  ..ft
mtrunc  mi..le
trunc   rig..

Förkortning fungerar korrekt endast när <n> är minst 2. Breda tecken, exempelvis emoji, kan ta två kolumner och kombinerande tecken kan hamna fel vid utfyllnadsgränser.

%<|(<m>)

Låt nästa platshållare ta minst så många kolumner som behövs för att nå displaykolumn <m>. Om <m> är negativ räknas positionen från terminalfönstrets högra kant.

%>(<n>), %>|(<m>)

Liknar %< och %<|, men fyller ut med blanksteg till vänster.

%>>(<n>), %>>|(<m>)

Liknar %> och %>|, men om nästa platshållare tar mer utrymme än angivet och det finns blanksteg till vänster om den, används dessa blanksteg.

%><(<n>), %><|(<m>)

Liknar %< och %<|, men fyller ut på båda sidor så att texten centreras.

Platshållare som utvidgas till information från commiten

%H

Commit-hash.

%h

Förkortad commit-hash.

%T

Tree-hash.

%t

Förkortad tree-hash.

%P

Parent-hashar.

%p

Förkortade parent-hashar.

%an, %aN

Författarens namn, respektive författarens namn med hänsyn till .mailmap. Se git-shortlog(1) eller git-blame(1).

%ae, %aE

Författarens e-postadress, respektive e-postadress med hänsyn till .mailmap.

%al, %aL

Den lokala delen av författarens e-postadress, alltså delen före @, respektive samma uppgift med hänsyn till .mailmap.

%ad, %aD, %ar, %at, %ai, %aI, %as, %ah

Författardatum i olika format: enligt --date=<format>, RFC 2822, relativt, Unix-tidsstämpel, ISO 8601-liknande, strikt ISO 8601, kort format YYYY-MM-DD och mänskligt anpassat format.

%cn, %cN

Committer-namn, respektive committer-namn med hänsyn till .mailmap.

%ce, %cE

Committer-e-postadress, respektive committer-e-postadress med hänsyn till .mailmap.

%cl, %cL

Den lokala delen av committer-e-postadressen, respektive samma uppgift med hänsyn till .mailmap.

%cd, %cD, %cr, %ct, %ci, %cI, %cs, %ch

Committer-datum i olika format: enligt --date=<format>, RFC 2822, relativt, Unix-tidsstämpel, ISO 8601-liknande, strikt ISO 8601, kort format YYYY-MM-DD och mänskligt anpassat format.

%d

Ref-namn, på samma sätt som --decorate i git-log(1).

%D

Ref-namn utan omslutningen " (" och ")".

%(decorate[:<alternativ>,...])

Ref-namn med anpassade dekorationer. Alternativ kan styra prefix, suffix, separator, pointer och tag. Standardvärden är bland annat " (", ")", , ', " → " och "tag: ". Om värden innehåller kommatecken eller avslutande parentes måste bokstavliga formateringskoder som %x2C och %x29 användas.

Exempel:

%(decorate:prefix=,suffix=,tag=,separator= )

%(describe[:<alternativ>,...])

Ett mänskligt läsbart namn, ungefär som git-describe(1). För commitar som inte kan beskrivas blir resultatet en tom sträng. Alternativ kan bland annat vara tags, abbrev=<antal>, match=<mönster> och exclude=<mönster>.

%S

Ref-namn som angavs på kommandoraden och som gjorde att commiten nåddes, ungefär som git log --source. Fungerar endast med git log.

%e

Kodning.

%s

Ämnesrad.

%f

Sanerad ämnesrad, lämplig som filnamn.

%b

Brödtext.

%B

Rå brödtext, alltså ämnesrad och brödtext utan uppdelning.

%GG

Rå verifieringsmeddelande från GPG för en signerad commit.

%G?

Visar status för signaturen:

G  god och giltig signatur
B  dålig signatur
U  god signatur med okänd giltighet
X  god signatur som har gått ut
Y  god signatur skapad med en utgången nyckel
R  god signatur skapad med en återkallad nyckel
E  signaturen kan inte kontrolleras, exempelvis på grund av saknad nyckel
N  ingen signatur

%GS

Namnet på den som signerade en signerad commit.

%GK

Nyckeln som användes för att signera en signerad commit.

%GF

Fingeravtrycket för nyckeln som användes för att signera en signerad commit.

%GP

Fingeravtrycket för den primära nyckel vars undernyckel användes för att signera en signerad commit.

%GT

Tillitsnivån för nyckeln som användes för att signera en signerad commit.

%gD

Reflog-väljare, till exempel:

refs/stash@{1}
refs/stash@{2 minutes ago}

%gd

Förkortad reflog-väljare. Samma som %gD, men ref-namndelen förkortas för att bli mer läsbar.

%gn, %gN

Namn för reflog-identitet, respektive samma namn med hänsyn till .mailmap.

%ge, %gE

E-postadress för reflog-identitet, respektive samma e-postadress med hänsyn till .mailmap.

%gs

Reflog-ämne.

%(trailers[:<alternativ>,...])

Visar trailers från brödtexten så som de tolkas av git-interpret-trailers(1). Alternativ kan bland annat vara:

key=<nyckel>

Visa endast trailers med angiven nyckel. Matchningen är skiftlägesokänslig och avslutande kolon är valfritt. Detta aktiverar automatiskt only.

only[=<bool>]

Välj om rader som inte är trailers i trailer-blocket ska tas med.

separator=<avskiljare>

Anger avskiljaren mellan trailer-rader. Standard är radmatning. Använd %x2C om ett kommatecken ska ingå i avskiljaren.

unfold[=<bool>]

Motsvarar att --unfold gavs till interpret-trailers.

keyonly[=<bool>]

Visa endast trailerns nyckel.

valueonly[=<bool>]

Visa endast trailerns värde.

key_value_separator=<avskiljare>

Anger avskiljaren mellan nyckel och värde för varje trailer. Standard är ": ".

Anmärkningar om platshållare

Vissa platshållare beror på andra alternativ till revisionsgenomgångsmotorn. Exempelvis ger reflog-platshållarna %g* en tom sträng om Git inte går igenom reflog-poster.

Platshållarna %d och %D använder kort dekorationsformat om --decorate inte redan angavs.

Booleska alternativ accepterar ett valfritt värde. Alla värden som accepteras av --type=bool i git-config(1), till exempel yes och off, accepteras. Ett booleskt alternativ utan värde motsvarar =true.

Om du lägger till + efter % i en platshållare infogas en radmatning direkt före expansionen, men endast om platshållaren expanderas till en icke-tom sträng.

Om du lägger till - efter % i en platshållare tas alla sammanhängande radmatningar direkt före expansionen bort, men endast om platshållaren expanderas till en tom sträng.

Om du lägger till ett blanksteg efter % i en platshållare infogas ett blanksteg direkt före expansionen, men endast om platshållaren expanderas till en icke-tom sträng.

tformat:

Formatet tformat: fungerar exakt som format:, förutom att det använder terminator-semantik i stället för separator-semantik. Varje commit får alltså ett avslutande tecken, vanligen en radbrytning, i stället för att separatorn bara placeras mellan poster.

Detta innebär att den sista posten i ett enradigt format avslutas korrekt med radbrytning, precis som formatet oneline.

Exempel med format::

$ git log -2 --pretty=format:%h 4da45bef \
  | perl -pe '$_ .= " -- NO NEWLINE\n" unless /\n/'
4da45be
7134973 -- NO NEWLINE

Med tformat::

$ git log -2 --pretty=tformat:%h 4da45bef \
  | perl -pe '$_ .= " -- NO NEWLINE\n" unless /\n/'
4da45be
7134973

Dessutom tolkas en okänd sträng som innehåller % som om tformat: stod framför den. Följande två kommandon är därför likvärdiga:

$ git log -2 --pretty=tformat:%h 4da45bef
$ git log -2 --pretty=%h 4da45bef

EXEMPEL

Skriv ut listan över commitar som kan nås från den aktuella grenen.

git rev-list HEAD

Skriv ut listan över commitar på denna gren, men inte i upstream-grenen.

git rev-list @{upstream}..HEAD

Formatera commitar med författare och commit-meddelande. Se även porcelain-kommandot git-log(1).

git rev-list --format=medium HEAD

Formatera commitar tillsammans med deras diffar. Se även porcelain-kommandot git-log(1), som kan göra detta i en enda process.

git rev-list HEAD |
git diff-tree --stdin --format=medium -p

Skriv ut listan över commitar på den aktuella grenen som rörde någon fil i katalogen Documentation.

git rev-list HEAD -- Documentation/

Skriv ut listan över commitar som du har skapat under det senaste året, på valfri gren, tagg eller annan ref.

git rev-list --author=you@example.com --since=1.year.ago --all

Skriv ut listan över objekt som kan nås från den aktuella grenen, alltså alla commitar och de blobbar och träd som de innehåller.

git rev-list --objects HEAD

Jämför diskstorleken för alla nåbara objekt, objekt som kan nås från refloggar och den totala packade storleken. Detta kan visa om git repack -ad kan minska arkivets storlek genom att ta bort onåbara objekt, och om det kan hjälpa att rensa refloggar.

# nåbara objekt
git rev-list --disk-usage --objects --all
# plus refloggar
git rev-list --disk-usage --objects --all --reflog
# total använd diskstorlek
du -c .git/objects/pack/*.pack .git/objects/??/*
# alternativ till du: summera fälten "size" och "size-pack"
git count-objects -v

Rapportera diskstorleken för varje gren, utan objekt som används av den aktuella grenen. Detta kan hitta avvikande grenar som bidrar till att arkivet blivit onödigt stort, exempelvis om någon råkat checka in stora byggartefakter.

git for-each-ref --format='%(refname)' |
while read branch
do
        size=$(git rev-list --disk-usage --objects HEAD..$branch)
        echo "$size $branch"
done |
sort -n

Jämför storleken på disk för grenar i en grupp refs, men uteslut en annan grupp. Om du blandar objekt från flera remotes i ett enda arkiv kan detta visa vilka remotes som bidrar till arkivets storlek, med storleken för origin som baslinje.

git rev-list --disk-usage --objects --remotes=$suspect --not --remotes=origin

GIT

Del av git(1)-sviten.

COLOPHON

Denna manualsida är en del av projektet git, det distribuerade versionshanteringssystemet Git. Information om projektet finns på Git-projektets webbplats. För felrapporter om Git hänvisas till Git-projektets gemenskaps- och supportresurser.

Den HTML-version som användes som källa anger att sidan hämtades från projektets upstream Git-repository den 2026-01-16. Vid det tillfället var den senaste commit som hittades i repositoryt daterad 2026-01-15. Sidans HTML-rendering skapades av Michael Kerrisk för man7.org.