Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.50.1 → 2.53.0 no changes
-
2.50.0
2025-06-16
- 2.49.1 no changes
-
2.49.0
2025-03-14
- 2.48.1 → 2.48.2 no changes
-
2.48.0
2025-01-10
- 2.44.1 → 2.47.3 no changes
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.7 no changes
-
2.43.0
2023-11-20
- 2.42.1 → 2.42.4 no changes
-
2.42.0
2023-08-21
- 2.38.1 → 2.41.3 no changes
-
2.38.0
2022-10-02
- 2.29.1 → 2.37.7 no changes
-
2.29.0
2020-10-19
- 2.25.1 → 2.28.1 no changes
-
2.25.0
2020-01-13
- 2.22.1 → 2.24.4 no changes
-
2.22.0
2019-06-07
- 2.19.1 → 2.21.4 no changes
-
2.19.0
2018-09-10
- 2.17.0 → 2.18.5 no changes
-
2.16.6
2019-12-06
- 2.15.4 no changes
-
2.14.6
2019-12-06
- 2.10.5 → 2.13.7 no changes
-
2.9.5
2017-07-30
-
2.8.6
2017-07-30
- 2.7.6 no changes
-
2.6.7
2017-05-05
- 2.4.12 → 2.5.6 no changes
-
2.3.10
2015-09-28
- 2.1.4 → 2.2.3 no changes
-
2.0.5
2014-12-17
SYNOPSIS
gitnotes[list[<objekt>]]gitnotesadd[-f] [--allow-empty] [--[no-]separator|--separator=<styckebrytning>] [--[no-]stripspace] [-F<file> |-m<medd> | (-c|-C) <objekt>] [-e] [<objekt>]gitnotescopy[-f] (--stdin| <from-object> [<to-object>] )gitnotesappend[--allow-empty] [--[no-]separator|--separator=<styckebrytning>] [--[no-]stripspace] [-F<file> |-m<medd> | (-c|-C) <objekt>] [-e] [<objekt>]gitnotesedit[--allow-empty] [<object>] [--[no-]stripspace]gitnotesshow[<objekt>]gitnotesmerge[-v|-q] [-s<strategi> ] <antecknings-ref>gitnotesmerge--commit[-v|-q]gitnotesmerge--abort[-v|-q]gitnotesremove[--ignore-missing] [--stdin] [<objekt>…]gitnotesprune[-n] [-v]gitnotesget-ref
BESKRIVNING
Lägger till, tar bort eller läser anteckningar som är kopplade till objekt, utan att röra själva objekten.
Som standard sparas anteckningar till och läses från refs/notes/commits, men standardinställningen kan åsidosättas. Se avsnitten ALTERNATIV, KONFIGURATION och MILJÖ nedan. Om referensen inte finns skapas den tyst när den först behövs för att lagra en anteckning.
En typisk användning av anteckningar är att komplettera ett incheckningsmeddelande utan att ändra själva incheckningen. Anteckningar kan visas av git log tillsammans med det ursprungliga incheckningsmeddelandet. För att skilja anteckningarna från meddelandet i incheckningsobjektet visas de indragna som meddelandet, efter en oindragen rad som säger "Anteckningar (<refnamn>):" (eller "Anteckningar:" för refs/notes/commits).
Anteckningar kan också läggas till patchar som förberetts med git format-patch genom att använda alternativet --notes. Sådana anteckningar läggs till som en patchkommentar efter en separatorrad med tre streck.
För att ändra vilka anteckningar som visas av git log, se avsnittet om notes.displayRef i KONFIGURATION.
Se konfigurationen notes.rewrite.<kommando> för ett sätt att överföra anteckningar mellan kommandon som skriver om incheckningar.
UNDERKOMMANDON
-
list -
Lista anteckningsobjektet för ett givet objekt. Om inget objekt anges visas en lista över alla anteckningsobjekt och de objekt de annoterar (i formatet "<anteckningsobjekt> <annoterat-objekt>"). Detta är standardunderkommandot om inget underkommando anges.
-
add -
Lägg till anteckningar för ett givet objekt (standard är
HEAD). Avbryt om objektet redan har anteckningar (använd-fför att skriva över befintliga anteckningar). Om du däremot använderaddinteraktivt (med en redigerare för att ange anteckningens innehåll) öppnas de befintliga anteckningarna i redigeraren (som med underkommandotedit). Om du anger flera-moch-Finfogas en tom rad mellan meddelandena. Använd--separatorför andra avgränsare. Du kan använda-eför att redigera och finjustera meddelanden från-moch-Finteraktivt innan anteckningen läggs till. -
copy -
Kopiera anteckningarna från det första objektet till det andra objektet (standard är
HEAD). Avbryt om det andra objektet redan har anteckningar, eller om det första objektet saknar anteckningar (använd-fför att skriva över befintliga anteckningar på det andra objektet). Detta underkommando motsvarar:gitnotesadd[-f]-C$(gitnoteslist<från-objekt>) <till-objekt>.I
--stdin-läge, ta rader i formatet<från-objekt> SP <till-objekt> [ SP <rest> ] LF
på standardinmatning, och kopiera anteckningarna från varje <från-objekt> till motsvarande <till-objekt>. (Valfria <rest> ignoreras så att kommandot kan läsa inmatning som ges till kroken
post-rewrite.)--stdinkan inte kombineras med objektnamn som anges på kommandoraden. -
append -
Lägg till nya meddelanden som anges med
-meller-Ftill en befintlig anteckning, eller lägg till dem som en ny anteckning om ingen finns, för objektet (standard ärHEAD). När meddelanden läggs till i en befintlig anteckning infogas en tom rad före varje nytt meddelande som avgränsare mellan stycken. Avgränsaren kan anpassas med--separator. Redigera anteckningarna som ska läggas till med-moch-Finteraktivt med-einnan anteckningen läggs till. -
edit -
Redigera anteckningarna för ett givet objekt (standardinställningen är
HEAD). -
show -
Visa anteckningarna för ett givet objekt (standardinställningen är
HEAD). -
merge -
Sammanfoga den angivna anteckningsreferensen med den aktuella anteckningsreferensen. Detta försöker sammanfoga ändringarna som gjorts av den angivna anteckningsreferensen (kallad "fjärr") sedan sammanslagningsbasen (om någon) in i den aktuella anteckningsreferensen (kallad "lokal").
Om konflikter uppstår och ingen strategi för automatisk lösning av motstridiga anteckningar anges (se avsnittet "ANTECKNINGSSAMMANSLAGNINGSSTRATEGIER") används lösaren
manual. Denna lösare checkar ut de motstridiga anteckningarna i ett särskilt arbetsträd (.git/NOTES_MERGE_WORKTREE) och instruerar användaren att lösa konflikterna manuellt där. När det är klart kan användaren antingen slutföra sammanslagningen medgitnotesmerge--commiteller avbryta den medgitnotesmerge--abort. -
remove -
Ta bort anteckningarna för givna objekt (standardinställningen är
HEAD). När man anger noll eller ett objekt från kommandoraden motsvarar detta att ange ett tomt anteckningsmeddelande till underkommandotedit.I
--stdin-läge, ta även bort objektnamnen som anges vid standardinmatning. Med andra ord kan--stdinkombineras med objektnamn från kommandoraden. -
prune -
Ta bort alla anteckningar för objekt som inte finns/inte kan nås.
-
get-ref -
Skriv ut aktuell anteckningsreferens. Detta ger ett enkelt sätt att hämta aktuell anteckningsreferens (t.ex. från skript).
ALTERNATIV
-
-f -
--force -
När du lägger till anteckningar till ett objekt som redan har anteckningar, skriv över de befintliga anteckningarna (i stället för att avbryta).
-
-m<medd> -
--message=<medd> -
Använd det angivna anteckningsmeddelandet (i stället för att fråga). Om flera
-m-alternativ anges sammanfogas deras värden som separata stycken. -
-F<fil> -
--file=<fil> -
Hämta anteckningsmeddelandet från den givna filen. Använd
-för att läsa anteckningsmeddelandet från standardinmatningen. -
-C<objekt> -
--reuse-message=<objekt> -
Använd det angivna blobobjektet (till exempel en annan anteckning) som anteckningsmeddelande. (Använd
gitnotescopy<object> i stället för att kopiera anteckningar mellan objekt.) Innebär--no-stripspaceeftersom standardbeteendet är att kopiera meddelandet ordagrant. -
-c<objekt> -
--reedit-message=<objekt> -
Som
-C, men med-canropas redigeraren så att användaren kan redigera anteckningsmeddelandet ytterligare. -
--allow-empty -
Tillåt att ett tomt anteckningsobjekt lagras. Standardbeteendet är att tomma anteckningar tas bort automatiskt.
-
--separator=<styckebrytning> -
--separator -
--no-separator -
Ange en sträng som används som en anpassad avgränsare mellan stycken (en nyrad läggs till i slutet vid behov). Om
--no-separatoranvänds läggs inga avgränsare till mellan stycken. Standardinställningen är en tom rad. -
--stripspace -
--no-stripspace -
Rensa upp blanktecken. Mer specifikt (se git-stripspace[1]):
-
ta bort efterföljande blanksteg från alla rader
-
kompaktera flera tomma rader i rad till en tom rad
-
ta bort tomma rader från början och slutet av inmatningen
-
lägg till ett saknat \n på sista raden om det behövs.
--stripspaceär standardvärdet förutom för-C/--reuse-message. Tänk dock på att detta beror på ordningen på liknande alternativ. Till exempel för-C<objekt>-m<meddelande> kommer--stripspaceatt användas eftersom standardvärdet för-måsidosätter det föregående-C. Detta är en känd begränsning som kan komma att åtgärdas i framtiden. -
-
--ref=<ref> -
Manipulera anteckningsträdet i <ref>. Detta åsidosätter
GIT_NOTES_REFoch konfigurationencore.notesRef. Ref anger det fullständiga referensnamnet när det börjar medrefs/notes/; när det börjar mednotes/prefixerasrefs/och annarsrefs/notes/för att bilda ett fullständigt namn på referensen. -
--ignore-missing -
Betrakta det inte som ett fel att begära borttagning av anteckningar från ett objekt som inte har några anteckningar kopplade till sig.
-
--stdin -
Gäller endast för
removeochcopy. Se respektive underkommandon. -
-n -
--dry-run -
Ta inte bort något; rapportera bara objektnamnen vars anteckningar skulle tas bort.
-
-s<strategi> -
--strategy=<strategi> -
När du sammanfogar anteckningar, lös anteckningskonflikter med den angivna strategin. Följande strategier stöds:
manual(standard),ours,theirs,unionochcat_sort_uniq. Detta alternativ åsidosätter konfigurationsinställningennotes.mergeStrategy. Se avsnittet "ANTECKNINGSSAMMANSLAGNINGSSTRATEGIER" nedan för mer information om varje strategi. -
--commit -
Slutför en pågående
gitnotesmerge. Använd det här alternativet när du har löst konflikterna somgitnotesmergelagrade i.git/NOTES_MERGE_WORKTREE. Detta uppdaterar den partiella sammanslagningsincheckning som skapades avgitnotesmerge(lagrad i.git/NOTES_MERGE_PARTIAL) genom att lägga till anteckningarna i.git/NOTES_MERGE_WORKTREE. Anteckningsreferensen som lagras i symrefen.git/NOTES_MERGE_REFuppdateras till den resulterande incheckningen. -
--abort -
Avbryt/återställ en pågående
gitnotesmerge, d.v.s. en anteckningssammanslagning med konflikter. Detta tar helt enkelt bort alla filer relaterade till anteckningssammanslagningen. -
-q -
--quiet -
När du sammanslår anteckningar, arbeta tyst.
-
-v -
--verbose -
Var mer utförlig när du sammanfogar anteckningar. När du beskär anteckningar, rapportera alla objektnamn vars anteckningar har tagits bort.
DISKUSSION
Incheckningsanteckningar är blobbar som innehåller extra information om ett objekt (vanligtvis information som kompletterar ett incheckningsmeddelande). Dessa blobbar hämtas från anteckningsreferenser. En anteckningsreferens är vanligtvis en gren som innehåller "filer" vars sökvägar är objektnamnen för objekten de beskriver, med vissa katalogavgränsare av prestandaskäl fotnot:[Tillåtna sökvägar har formen bf/fe/30/…/680d5a…: en sekvens av katalognamn med två hexadecimala siffror vardera, följt av ett filnamn med resten av objekt-ID:t.].
Varje anteckningsändring skapar en ny incheckning vid den angivna anteckningsreferensen. Du kan därför granska anteckningarnas historik genom att till exempel köra git log -p notes/commits. För närvarande registrerar incheckningsmeddelandet bara vilken operation som utlöste uppdateringen, och incheckningsförfattarskap bestäms enligt de vanliga reglerna (se git-commit[1]). Dessa detaljer kan ändras i framtiden.
Det är också tillåtet att en anteckningsreferens pekar direkt på ett trädobjekt, i vilket fall anteckningarnas historik kan läsas med git log -p -g <refnamn>.
ANTECKNINGSSAMMANSLAGNINGSSTRATEGIER
Standardstrategin för anteckningssammanslagning är manual, som checkar ut motstridiga anteckningar i ett särskilt arbetsträd för att lösa anteckningskonflikter (.git/NOTES_MERGE_WORKTREE) och instruerar användaren att lösa konflikterna där. När det är klart kan användaren antingen slutföra sammanslagningen med git notes merge --commit, eller avbryta den med git notes merge --abort.
Användare kan välja en automatiserad sammanslagningsstrategi bland följande med hjälp av antingen alternativet -s/--strategy eller genom att konfigurera notes.mergeStrategy i enlighet därmed:
ours löser automatiskt motstridiga anteckningar till förmån för den lokala versionen (d.v.s. den aktuella anteckningsreferensen).
theirs löser automatiskt anteckningskonflikter till förmån för fjärrversionen (d.v.s. den angivna anteckningsreferensen som sammanfogas in i den aktuella anteckningsreferensen).
union automatically resolves notes conflicts by concatenating the local and remote versions.
cat_sort_uniq is similar to union, but in addition to concatenating the local and remote versions, this strategy also sorts the resulting lines, and removes duplicate lines from the result. This is equivalent to applying the "cat | sort | uniq" shell pipeline to the local and remote versions. This strategy is useful if the notes follow a line-based format where one wants to avoid duplicated lines in the merge result. Note that if either the local or remote version contain duplicate lines prior to the merge, these will also be removed by this notes merge strategy.
EXEMPEL
Du kan använda anteckningar för att lägga till information som inte var tillgänglig när en incheckning skrevs.
$ git notes add -m 'Tested-by: Johannes Sixt <j6t@kdbg.org>' 72a144e2
$ git show -s 72a144e
[...]
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Notes:
Tested-by: Johannes Sixt <j6t@kdbg.org>
I princip är en anteckning en vanlig Git-blob, och alla slags (icke-)format accepteras. Du kan skapa anteckningar binärsäkert från godtyckliga filer med git hash-object:
$ cc *.c $ blob=$(git hash-object -w a.out) $ git notes --ref=built add --allow-empty -C "$blob" HEAD
(Du kan inte bara använda git notes --ref=built add -F a.out HEAD eftersom det inte är binärsäkert.) Naturligtvis är det inte särskilt meningsfullt att visa anteckningar som inte är i textformat med git log, så om du använder sådana anteckningar behöver du förmodligen skriva några specialverktyg för att göra något användbart med dem.
KONFIGURATION
Allt ovanför den här raden i det här avsnittet finns inte med i dokumentationen för git-config[1]. Innehållet som följer är detsamma som det som finns där:
-
notes.mergeStrategy -
Vilken sammanslagningsstrategi som ska väljas som standard vid lösande av anteckningskonflikter. Måste vara en av
manual,ours,theirs,unionellercat_sort_uniq. Standardinställningen ärmanual. Se avsnittet "ANTECKNINGAR SAMMANSLAGNINGSSTRATEGIER" i git-notes[1] för mer information om varje strategi.Den här inställningen kan åsidosättas genom att skicka
--strategy-alternativet till git-notes[1]. -
notes.<name>.mergeStrategy -
Vilken sammanslagningsstrategi man ska välja när man sammanfogar anteckningar med
refs/notes/<namn>. Detta åsidosätter den mer generellanotes.mergeStrategy. Se avsnittet "ANTECKNINGAR SAMMANSLAGNINGSSTRATEGIER" i git-notes[1] för mer information om tillgängliga strategier. -
notes.displayRef -
Vilken referens (eller referenser, om en glob eller angetts mer än en gång), utöver standardvärdet som anges av
core.notesRefellerGIT_NOTES_REF, som anteckningar ska läsas från när inchecknings-meddelanden visas med kommandofamiljengitlog.Den här inställningen kan åsidosättas med miljövariabeln
GIT_NOTES_DISPLAY_REF, som måste vara en kolonseparerad lista med referenser eller globs.En varning kommer att utfärdas för referenser som inte finns, men en glob som inte matchar några referenser ignoreras tyst.
Den här inställningen kan inaktiveras med alternativet
--no-notestill kommandofamiljen git-log[1], eller med alternativet--notes=<ref> som accepteras av dessa kommandon.Det effektiva värdet för
core.notesRef(eventuellt åsidosatt avGIT_NOTES_REF) läggs också implicit till i listan över referenser som ska visas. -
notes.rewrite.<kommando> -
När man skriver om incheckningar med <kommando> (för närvarande
amendellerrebase), och variabeln ärfalse, kommer git inte att kopiera anteckningar från originalet till den omskrivna incheckningen. Standardvärdet ärtrue. Se ävennotes.rewriteRefnedan.Den här inställningen kan åsidosättas med miljövariabeln
GIT_NOTES_REWRITE_REF, som måste vara en kolonseparerad lista med referenser eller globs. -
notes.rewriteMode -
När anteckningar kopieras under en omskrivning (se alternativet
notes.rewrite.<kommando>), avgör detta vad som ska göras om mål-incheckningen redan har en anteckning. Måste vara en avoverwrite,concatenate,cat_sort_uniqellerignore. Standardvärdet ärconcatenate.Den här inställningen kan åsidosättas med miljövariabeln
GIT_NOTES_REWRITE_MODE. -
notes.rewriteRef -
När anteckningar kopieras under en omskrivning, anger detta den (fullständigt kvalificerade) referens vars anteckningar ska kopieras. Kan vara en glob, i vilket fall anteckningar i alla matchande referenser kommer att kopieras. Du kan också ange denna konfiguration flera gånger.
Har inget standardvärde; du måste konfigurera den här variabeln för att aktivera omskrivning av anteckningar. Ställ in den på
refs/notes/commitsför att aktivera omskrivning för standard incheckning anteckningarna.Kan åsidosättas med miljövariabeln
GIT_NOTES_REWRITE_REF. Senotes.rewrite.<kommando> ovan för en ytterligare beskrivning av dess format.
MILJÖ
-
GIT_NOTES_REF -
Vilken referens anteckningar ska manipuleras från, i stället för
refs/notes/commits. Detta åsidosätter inställningencore.notesRef. -
GIT_NOTES_DISPLAY_REF -
Kolonavgränsad lista med referenser eller glober som anger vilka referenser, utöver standardvärdet från
core.notesRefellerGIT_NOTES_REF, som anteckningar ska läsas från när incheckningsmeddelanden visas. Detta åsidosätter inställningennotes.displayRef.En varning kommer att utfärdas för referenser som inte finns, men en glob som inte matchar några referenser ignoreras tyst.
-
GIT_NOTES_REWRITE_MODE -
När anteckningar kopieras under en omskrivning: vad som ska göras om målincheckningen redan har en anteckning. Måste vara ett av följande värden:
overwrite,concatenate,cat_sort_uniqellerignore. Detta åsidosätter inställningencore.rewriteMode. -
GIT_NOTES_REWRITE_REF -
Vid omskrivning av incheckningar: vilka anteckningar som ska kopieras från originalet till den omskrivna incheckningen. Måste vara en kolonavgränsad lista med referenser eller glober.
Om det inte är angivet i miljön, beror listan över anteckningar som ska kopieras på inställningarna
notes.rewrite.<kommando> ochnotes.rewriteRef.
GIT
En del av git[1]-sviten