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.53.0
2026-02-02
-
2.52.0
2025-11-17
- 2.51.1 → 2.51.2 no changes
-
2.51.0
2025-08-18
- 2.50.1 no changes
-
2.50.0
2025-06-16
- 2.49.1 no changes
-
2.49.0
2025-03-14
- 2.46.2 → 2.48.2 no changes
-
2.46.1
2024-09-13
- 2.45.1 → 2.46.0 no changes
-
2.45.0
2024-04-29
- 2.43.2 → 2.44.4 no changes
-
2.43.1
2024-02-09
-
2.43.0
2023-11-20
- 2.38.1 → 2.42.4 no changes
-
2.38.0
2022-10-02
- 2.35.1 → 2.37.7 no changes
-
2.35.0
2022-01-24
- 2.34.1 → 2.34.8 no changes
-
2.34.0
2021-11-15
- 2.33.1 → 2.33.8 no changes
-
2.33.0
2021-08-16
- 2.32.1 → 2.32.7 no changes
-
2.32.0
2021-06-06
- 2.31.1 → 2.31.8 no changes
-
2.31.0
2021-03-15
- 2.30.1 → 2.30.9 no changes
-
2.30.0
2020-12-27
- 2.27.1 → 2.29.3 no changes
-
2.27.0
2020-06-01
- 2.25.2 → 2.26.3 no changes
-
2.25.1
2020-02-17
-
2.25.0
2020-01-13
- 2.24.1 → 2.24.4 no changes
-
2.24.0
2019-11-04
- 2.23.1 → 2.23.4 no changes
-
2.23.0
2019-08-16
- 2.21.1 → 2.22.5 no changes
-
2.21.0
2019-02-24
- 2.17.0 → 2.20.5 no changes
-
2.16.6
2019-12-06
- 2.14.6 → 2.15.4 no changes
-
2.13.7
2018-05-22
-
2.12.5
2017-09-22
-
2.11.4
2017-09-22
-
2.10.5
2017-09-22
-
2.9.5
2017-07-30
- 2.8.6 no changes
-
2.7.6
2017-07-30
-
2.6.7
2017-05-05
- 2.5.6 no changes
-
2.4.12
2017-05-05
- 2.3.10 no changes
-
2.2.3
2015-09-04
- 2.1.4 no changes
-
2.0.5
2014-12-17
SYNOPSIS
gitcommit[-a|--interactive|--patch] [-s] [-v] [-u[<läge>]] [--amend] [--dry-run] <incheckning>_ |--fixup[(amend|reword):"><incheckning>] [-F<fil> |-m<medd>] [--reset-author] [--allow-empty] [--allow-empty-message] [--no-verify] [-e] [--author=<författare>] [--date=<datum>] [--cleanup=<läge>] [--[no-]status] [-i|-o] [--pathspec-from-file=<fil> [--pathspec-file-nul]] [(--trailer<symbol>[(=|:)<värde>])…] [-S[<nyckel-id>]] [--] [<sökväg>…]
BESKRIVNING
Skapa en ny incheckning som innehåller det aktuella innehållet i indexet och det givna loggmeddelandet som beskriver ändringarna. Den nya incheckningen är ett direkt barn till HEAD, vanligtvis toppen av den aktuella grenen, och grenen uppdateras för att peka på den (såvida ingen gren är associerad med arbetskatalog, i vilket fall HEAD "kopplas bort" enligt beskrivningen i git-checkout[1]).
Innehållet som ska checkas-in kan specificeras på flera sätt:
-
genom att använda git-add[1] för att stegvis "lägga till" ändringar i indexet innan man använder
commit-kommandot (Obs: även modifierade filer måste "läggas till"); -
genom att använda git-rm[1] för att ta bort filer från arbetskatalog och indexet, igen innan man använder
commit-kommandot; -
genom att lista filer som argument till
commit-kommandot (utan--interactiveeller--patch-växeln), i vilket fall inchecknings-kommandot kommer att ignorera ändringar som köats i indexet och istället registrera det aktuella innehållet i de listade filerna (vilket Git redan måste känna till); -
genom att använda
-a-växeln medcommit-kommandot för att automatiskt "lägga till" ändringar från alla kända filer (dvs. alla filer som redan finns listade i indexet) och för att automatiskt "rm" filer i indexet som har tagits bort från arbetskatalog, och sedan utföra själva inchecknings-processen; -
genom att använda växlarna
--interactiveeller--patchmed kommandotcommitför att en efter en bestämma vilka filer eller stycken som ska ingå i incheckningen utöver innehållet i indexet, innan operationen slutförs. Se avsnittet “Interaktivt läge” i git-add[1] för att lära dig hur man använder dessa lägen.
Alternativet --dry-run kan användas för att få en sammanfattning av vad som ingår i något av ovanstående för nästa incheckning genom att ange samma uppsättning parametrar (alternativ och sökvägar).
Om du gör en incheckning och sedan hittar ett misstag direkt efter det, kan du återställa det med git reset.
ALTERNATIV
-
-a -
--all -
Köar-automatiskt filer som har ändrats och raderats, men nya filer som du inte har informerat Git om påverkas inte.
-
-p -
--patch -
Använd det interaktiva gränssnittet för val av patch för att välja vilka ändringar som ska checkas-in. Se git-add[1] för mer information.
-
-U<n> -
--unified=<n> -
Generate diffs with <n> lines of context. Defaults to
diff.contextor 3 if the config option is unset. -
--inter-hunk-context=<n> -
Visar sammanhanget mellan olika stycken, upp till det angivna <antal> rader, och sammanfogar därmed stycken som ligger nära varandra. Standardvärdet är
diff.interHunkContexteller 0 om konfigurationsalternativet inte är inställt.
-
-C<incheckning> -
--reuse-message=<incheckning> -
Ta ett befintligt <incheckning>-objekt och återanvänd loggmeddelandet och författarinformationen (inklusive tidsstämpeln) när du skapar inchecknings-filen.
-
-c<incheckning> -
--reedit-message=<incheckning> -
Som
-C, men med-canropas editorn, så att användaren kan redigera incheckning-meddelandet ytterligare. -
--fixup=[(amend|reword):]<incheckning> -
Skapa en ny incheckning som "fixar upp" <incheckning> när den tillämpas med
gitrebase--autosquash. Vanlig--fixup=<incheckning> skapar en "fixup!"-incheckning som ändrar innehållet i <incheckningen> men lämnar dess loggmeddelande orört.--fixup=amend:<incheckning> är liknande men skapar en "amend!"-incheckning som också ersätter loggmeddelandet för <incheckning> med loggmeddelandet från "amend!"-incheckningen.--fixup=reword:<incheckning> skapar en "amend!"-incheckning som ersätter loggmeddelandet för <incheckning> med sitt eget loggmeddelande men gör inga ändringar i innehållet i <incheckning>.Den incheckning som skapas av
--fixup=<incheckning> har en titel som består av "fixup!" följt av titeln <incheckning>, och känns igen speciellt avgitrebase--autosquash. Alternativet-mkan användas för att komplettera loggmeddelandet för den skapade commiten, men den ytterligare kommentaren kommer att försvinna när "fixup!"-incheckningen har klämts in i <incheckning> avgitrebase--autosquash.Den incheckning som skapas av
--fixup=amend:<incheckning> är liknande men dess titel har istället prefixet "amend!". Loggmeddelandet för <incheckning> kopieras till loggmeddelandet för "amend!"-incheckningen och öppnas i en editor så att det kan förfinas. Närgitrebase--autosquashkomprimerar "amend!"-incheckningen till <incheckning> ersätts loggmeddelandet för <incheckning> av det förfinade loggmeddelandet från "amend!"-incheckningen. Det är ett fel om "amend!"-inchecknings loggmeddelande är tomt om inte--allow-empty-messageanges.--fixup=reword:<incheckning> är en förkortning för--fixup=amend:<incheckning>--only. Den skapar en "amend!"-incheckning med endast ett loggmeddelande (ignorerar eventuella ändringar som köats i indexet). När den komprimeras avgitrebase--autosquashersätter den loggmeddelandet för <incheckning> utan att göra några andra ändringar.Varken "fixup!" eller "amend!" bekräftar ändring av författarskap för <incheckning> när det tillämpas av
gitrebase--autosquash. Se git-rebase[1] för detaljer. -
--squash=<incheckning> -
Konstruera ett inchecknings-meddelande för användning med
gitrebase--autosquash. Rubriken för inchecknings-meddelandet hämtas från den angivna inchecknings-funktionen med prefixet "squash!". Kan användas med ytterligare inchecknings-meddelandealternativ (-m/-c/-C/-F). Se git-rebase[1] för mer information. -
--reset-author -
När det används med
-C/-c/--amend-flaggor, eller vid incheckning efter ett motstridigt urval av attribut, deklareras att författarskapet till den resulterande incheckningen nu tillhör incheckaren. Detta förnyar också författartidsstämpeln. -
--short -
När du gör en testkörning, ange utdata i short-format. Se git-status[1] för detaljer. Implicerar
--dry-run. -
--branch -
Visa gren- och spårningsinformation även i kortformat. Se git-status[1] för mer information.
-
--porcelain -
När du gör en torrkörning, ge utdata i ett porslinsklart format. Se git-status[1] för detaljer. Implicerar
--dry-run. -
--long -
När du gör en testkörning, ange utdata i long-format. Detta är standardutdata för git-status[1]. Implicerar
--dry-run. -
-z -
--null -
När
shortellerporcelaingit-status[1] visas, skriv ut filnamnet ordagrant och avsluta posterna med NUL, istället för LF. Om inget format anges, innebär detta utdataformatet--porcelain. Utan-z-alternativet citeras filnamn med "ovanliga" tecken enligt beskrivningen för konfigurationsvariabelncore.quotePath(se git-config[1]). -
-F<fil> -
--file=<fil> -
Hämta incheckning-meddelandet från <fil>. Använd - för att läsa meddelandet från standardindata.
-
--author=<författare> -
Åsidosätt inchecknings-författaren. Ange en explicit författare med standardformatet A U Thor <författare@example.com>. Annars antas <författare> vara ett mönster och används för att söka efter en befintlig incheckning av den författaren (dvs.
gitrev-list--all-i--author=<författare>); inchecknings-författaren kopieras sedan från den första hittade incheckningen. -
--date=<datum> -
Åsidosätt författardatumet som användes i incheckningen.
-
-m<medd> -
--message=<medd> -
Använd <medd> som incheckning-meddelande. Om flera
-m-alternativ anges, sammanfogas deras värden som separata stycken.Alternativet
-mutesluter-c,-Coch-F. -
-t<fil> -
--template=<fil> -
När du redigerar incheckning-meddelandet, starta editorn med innehållet i <fil>. Konfigurationsvariabeln
commit.templateanvänds ofta för att ge denna möjlighet implicit till kommandot. Denna mekanism kan användas av projekt som vill vägleda deltagarna med några tips om vad de ska skriva i meddelandet och i vilken ordning. Om användaren avslutar editorn utan att redigera meddelandet avbryts inchecknings-inlämningen. Detta har ingen effekt när ett meddelande ges på annat sätt, t.ex. med alternativen-meller-F. -
-s -
--signoff -
--no-signoff -
Add a
Signed-off-bytrailer by the committer at the end of the commit log message. The meaning of a signoff depends on the project to which you’re committing. For example, it may certify that the committer has the rights to submit the work under the project’s license or agrees to some contributor representation, such as a Developer Certificate of Origin. (See https://developercertificate.org for the one used by the Linux kernel and Git projects.) Consult the documentation or leadership of the project to which you’re contributing to understand how the signoffs are used in that project.Alternativet
--no-signoffkan användas för att upphäva ett tidigare--signoff-alternativ på kommandoraden.Git har inte (och kommer inte ha) en konfigurationsvariabel för att aktivera kommandoradsalternativet
--signoffsom standard; secommit.signoff-posten i gitfaq[7] för mer information.
-
--trailer<token>[(=|:)<värde>] -
Ange ett (<token>, <värde>)-par som ska användas som en trailer. (t.ex. git commit --trailer "Signed-off-by:C O Mitter \ <committer@example.com>" --trailer "Helped-by:C O Mitter \ <committer@example.com>" kommer att lägga till trailern
Signed-off-byoch trailernHelped-byi incheckares-meddelandet.) Konfigurationsvariablernatrailer.*(git-interpret-trailers[1]) kan användas för att definiera om en duplicerad trailer utelämnas, var i trailerserien varje trailer ska visas och andra detaljer. -
-n -
--verify -
--no-verify -
Hoppa över krokarna
pre-commitochcommit-msg. Se även githooks[5]. -
--allow-empty -
Vanligtvis är det ett misstag att registrera en incheckning som har exakt samma träd som dess enda överordnade incheckning, och kommandot hindrar dig från att göra en sådan incheckning. Det här alternativet kringgår säkerheten och används främst av främmande SCM-gränssnittsskript.
-
--allow-empty-message -
Skapa en commit med ett tomt inchecknings-meddelande utan att använda plumbing-kommandon som git-commit-tree[1]. Precis som
--allow-emptyär detta kommando främst avsett för användning av främmande SCM-gränssnittsskript. -
--cleanup=<läge> -
Bestäm hur det angivna inchecknings-meddelandet ska rensas upp innan det checkas-in. <mode> kan vara
strip,whitespace,verbatim,scissorsellerdefault.-
strip -
Ta bort inledande och efterföljande tomma rader, efterföljande blanksteg, kommentarer och dölj på varandra följande tomma rader.
-
whitespace -
Samma som
stripförutom att #kommentarer inte tas bort. -
verbatim -
Ändra inte meddelandet alls.
-
scissors -
Samma som
blankteckenförutom att allt från (och inklusive) raden nedanför avkortas om meddelandet ska redigeras. "#" kan anpassas medcore.commentChar.# ------------------------ >8 ------------------------
-
default -
Samma som
stripom meddelandet ska redigeras. Annarswhitespace.
Standardvärdet kan ändras med konfigurationsvariabeln
commit.cleanup(se git-config[1]). -
-
-e -
--edit -
Låt användaren ytterligare redigera meddelandet som tagits från <fil> med
-F<fil>, kommandoraden med-m<meddelande> och från <incheckning> med-C<incheckning>. -
--no-edit -
Använd det valda incheckning-meddelandet utan att starta en editor. Till exempel ändrar
gitcommit--amend--no-editen commit utan att ändra dess commit-meddelande. -
--amend -
Replace the tip of the current branch by creating a new commit. The recorded tree is prepared as usual (including the effect of the
-iand-ooptions and explicit pathspec), and the message from the original commit is used as the starting point, instead of an empty message, when no other message is specified from the command line via options such as-m,-F,-c, etc. The new commit has the same parents and author as the current one (the--reset-authoroption can countermand this).Det är en ungefärlig motsvarighet för:
$ git reset --soft HEAD^ $ ... gör något annat för att få fram rätt träd ... $ git commit -c ORIG_HEAD
men kan användas för att ändra en sammanslagings-incheckning.
Du bör förstå konsekvenserna av att skriva om historiken om du ändrar en incheckning som redan har publicerats. (Se avsnittet "ÅTERSTÄLLA FRÅN UPSTRÖMSREBASE" i git-rebase[1].)
-
--no-post-rewrite -
Hoppa över kroken
post-rewrite. -
-i -
--include -
Before making a commit out of staged contents so far, stage the contents of paths given on the command line as well. This is usually not what you want unless you are concluding a conflicted merge.
-
-o -
--only -
Gör en incheckning genom att hämta det uppdaterade innehållet i arbetskatalogen för de sökvägar som anges på kommandoraden, utan att ta hänsyn till innehåll som är köade för andra sökvägar. Detta är standardläget för
gitcommitom några sökvägar anges på kommandoraden, i vilket fall detta alternativ kan utelämnas. Om detta alternativ anges tillsammans med--amendbehöver inga sökvägar anges, vilka kan användas för att ändra den senaste incheckningen utan att checka-in ändringar som redan har köats. Om de används tillsammans med--allow-emptykrävs inte heller några sökvägar, och en tom incheckning kommer att skapas. -
--pathspec-from-file=<fil> -
Skicka sökvägsspec i <fil> istället för kommandoradsargument. Om <fil> är exakt
-används standardindata. Sökvägsspec-element separeras med LF eller CR/LF. Sökvägsspec-element kan citeras enligt beskrivningen för konfigurationsvariabelncore.quotePath(se git-config[1]). Se även--pathspec-file-nuloch global--literal-pathspecs. -
--pathspec-file-nul -
Endast meningsfullt med
--pathspec-from-file. Pathspec-element separeras med tecknet NUL och alla andra tecken tolkas bokstavligt (inklusive radbrytningar och citattecken). -
-u[<läge>] -
--untracked-files[=<läge>] -
Visa ospårade filer.
Parametern <mode> är valfri (standardinställningen är
all) och används för att ange hanteringen av ospårade filer; när-uinte används är standardinställningennormal, d.v.s. visar ospårade filer och kataloger.De möjliga alternativen är:
Alla vanliga stavningar för det booleska värdet
truetas somnormalochfalsesomno. Standardvärdet kan ändras med hjälp av konfigurationsvariabelnstatus.showUntrackedFilessom dokumenteras i git-config[1]. -
-v -
--verbose -
Visa en enhetlig skillnad mellan
HEAD-incheckning och vad som skulle checkas-in längst ner i inchecknings-meddelandemallen för att hjälpa användaren att beskriva incheckningen genom att påminna om vilka ändringar incheckningen har. Observera att denna diff-utdata inte har sina rader prefixerade med#. Denna skillnad kommer inte att vara en del av inchecknings-meddelandet. Se konfigurationsvariabelncommit.verbosei git-config[1].Om det anges två gånger, visa dessutom den enhetliga skillnaden mellan vad som skulle checkas-in och arbetsträd, dvs. de oköade ändringarna av spårade filer.
-
-q -
--quiet -
Undertryck sammanfattnings-meddelande för incheckningen.
-
--dry-run -
Skapa inte en incheckning, utan visa en lista över sökvägar som ska checkas-in, sökvägar med lokala ändringar som kommer att lämnas oincheckade och sökvägar som inte spåras.
-
--status -
Inkludera utdata från git-status[1] i inchecknings-meddelandemallen när en editor används för att förbereda inchecknings-meddelandet. Standardinställningen är på, men kan användas för att åsidosätta konfigurationsvariabeln
commit.status. -
--no-status -
Inkludera inte utdata från git-status[1] i inchecknings-meddelandemallen när du använder en editor för att förbereda standard inchecknings-meddelandet.
-
-S[<nyckel-id>] -
--gpg-sign[=<nyckel-id>] -
--no-gpg-sign -
GPG-signera incheckning. <nyckel-id> är valfri och används som standard för incheckare-identiteten; om den anges måste den fästas vid alternativet utan mellanslag.
--no-gpg-signär användbar för att negligera både konfigurationsvariabelncommit.gpgSignoch den tidigare--gpg-sign. -
-- -
Tolka inte fler argument som alternativ.
- <sökvägsspec>...
-
När <sökvägsspec> anges på kommandoraden, checka-in innehållet i filerna som matchar sökvägsspec utan att registrera de ändringar som redan lagts till i indexet. Innehållet i dessa filer köas också för nästa incheckning utöver vad som har köats tidigare.
För mer information, se posten sökvägsspec i gitglossary[7].
EXEMPEL
När du registrerar in ditt eget arbete lagras innehållet i modifierade filer i ditt arbetskatalog tillfälligt i ett kö-område som kallas "index" med git add. En fil kan ångrar tillbaka, endast i indexet men inte i arbetskatalog, till det som var i den senaste incheckningen med git restore --staged <fil>, vilket effektivt ångrar git add och förhindrar att ändringarna i denna fil deltar i nästa incheckning. Efter att ha byggt det tillstånd som ska checkas-in köats med dessa kommandon, används git commit (utan någon sökvägsparameter) för att registrera vad som hittills har köats. Detta är den mest grundläggande formen av kommandot. Ett exempel:
$ edit hej.c $ git rm adjö.c $ git add hej.c $ git commit
Istället för att köa filer efter varje enskild ändring kan du ange att git commit ska notera ändringarna i de filer vars innehåll spåras i ditt arbetsträd och göra motsvarande git add och git rm åt dig. Det vill säga, det här exemplet gör samma sak som det tidigare exemplet om det inte finns någon annan ändring i ditt arbetsträd:
$ edit hej.c $ rm adjö.c $ git commit -a
Kommandot git commit -a tittar först på ditt arbetskatalog, märker att du har modifierat hej.c och tagit bort adjö.c, och utför nödvändiga git add och git rm åt dig.
Efter att ha köat ändringar i många filer kan du ändra ordningen som ändringarna registreras i genom att ge sökvägar till git commit. När sökvägar anges gör kommandot en incheckning som bara registrerar de ändringar som gjorts i de namngivna sökvägarna:
$ edit hej.c hej.h $ git add hej.c hej.h $ edit Makefile $ git commit Makefile
Detta skapar en incheckning som registrerar modifieringen till Makefile. Ändringarna som köats för hej.c och hej.h inkluderas inte i den resulterande incheckningen. Deras ändringar går dock inte förlorade — de köas fortfarande och hålls bara tillbaka. Om du gör det efter ovanstående sekvens:
$ git commit
Denna andra incheckningen skulle registrera ändringarna av hej.c och hej.h som förväntat.
Efter att en sammanslagning (initierad av git merge eller git pull) stoppas på grund av konflikter, är rent sammanslagna sökvägar redan köade för att checkas-in åt dig, och sökvägar som är i konflikt lämnas i osammanslaget tillstånd. Du måste först kontrollera vilka sökvägar som är i konflikt med git status och efter att ha åtgärdat dem manuellt i ditt arbetskatalog, du skulle köa resultatet som vanligt med git add:
$ git status | grep unmerged unmerged: hello.c $ edit hello.c $ git add hello.c
Efter att konflikter har lösts och resultatet köats, kommer git ls-files -u att sluta nämna den konfliktfyllda sökvägen. När du är klar, kör git commit för att slutligen registrera sammanslagningen:
$ git commit
Precis som i fallet med att registrera dina egna ändringar kan du använda alternativet -a för att spara skrivning. En skillnad är att under en sammanslagnings-lösning kan du inte använda git commit med sökvägar för att ändra ordningen som ändringarna checkas-in, eftersom sammanslagningen ska registreras som en enda incheckning. Kommandot vägrar faktiskt att köras när det ges sökvägar (men se alternativet -i).
COMMIT INFORMATION
Information om författare och incheckare hämtas från följande miljövariabler, om de är inställda:
-
GIT_AUTHOR_NAME -
GIT_AUTHOR_EMAIL -
GIT_AUTHOR_DATE -
GIT_COMMITTER_NAME -
GIT_COMMITTER_EMAIL -
GIT_COMMITTER_DATE
(obs "<", ">" och "\n" är avskalade)
Författar- och incheckare-namnen är enligt konvention någon form av ett personnamn (det vill säga det namn som andra människor refererar till dig med), även om Git inte tillämpar eller kräver någon särskild form. Godtycklig Unicode kan användas, med förbehåll för de begränsningar som anges ovan. Detta namn har ingen effekt på autentisering; för detta, se variabeln credential.username i git-config[1].
Om (några av) dessa miljövariabler inte är angivna, hämtas informationen från konfigurationsalternativen user.name och user.email, eller, om de inte finns, miljövariabeln EMAIL, eller, om den inte är angiven, systemanvändarnamnet och värdnamnet som används för utgående e-post (hämtat från /etc/mailname och använder det fullständiga kvalificerade värdnamnet när den filen inte finns).
author.name och committer.name och deras motsvarande e-postalternativ åsidosätter user.name och user.email om de är inställda och åsidosätts själva av miljövariablerna.
Den typiska användningen är att bara ange variablerna user.name och user.email; de andra alternativen finns för mer komplexa användningsfall.
DATUMFORMAT
Miljövariablerna GIT_AUTHOR_DATE och GIT_COMMITTER_DATE stöder följande datumformat:
- Git internt format
-
Det är <unix-timestamp> <time-zone-offset>, där <unix-timestamp> är antalet sekunder sedan UNIX-epoken. <time-zone-offset> är en positiv eller negativ förskjutning från UTC. Till exempel är CET (som är 1 timme före UTC)
+0100. - RFC 2822
-
Standarddatumformatet som beskrivs av RFC 2822, till exempel
Tor,07Apr200522:13:13+0200. - ISO 8601
-
Tid och datum som anges av ISO 8601-standarden, till exempel
2005-04-07T22:13:13. Parsern accepterar även ett mellanslag istället för tecknetT. Bråkdelar av en sekund kommer att ignoreras, till exempel2005-04-07T22:13:13.019kommer att behandlas som2005-04-07T22:13:13.NoteDessutom accepteras datumdelen i följande format: ÅÅÅÅ.MM.DD, MM/DD/ÅÅÅÅ och DD.MM.ÅÅÅÅ.
Förutom att känna igen alla datumformat ovan, kommer alternativet --date också att försöka förstå andra, mer människocentrerade datumformat, såsom relativa datum som "yesterday" (igår) eller "yesterday" (förra fredagen vid middagstid).
DISKUSSION
Även om det inte är ett krav är det en bra idé att börja inchecknings-meddelandet med en enda kort rad (högst 50 tecken) som sammanfattar ändringen, följt av en tom rad och sedan en mer utförlig beskrivning. Texten fram till den första tomma raden i ett inchecknings-meddelande behandlas som inchecknings-titeln, och den titeln används i hela Git. Till exempel, git-format-patch[1] omvandlar en commit till ett e-postmeddelande, och den använder titeln på ämnesraden och resten av inchecknings-meddelandet i brödtexten.
Git är till viss del teckenkodningsagnostisk.
-
Innehållet i blob-objekten är otolkade sekvenser av byte. Det finns ingen kodningsöversättning på kärnnivå.
-
Sökvägsnamn är kodade i UTF-8-normaliseringsform C. Detta gäller trädobjekt, indexfilen, referensnamn, såväl som sökvägsnamn i kommandoradsargument, miljövariabler och konfigurationsfiler (
.git/config(se git-config[1]), gitignore[5], gitattributes[5] och gitmodules[5]).Observera att Git på kärnnivå behandlar sökvägsnamn helt enkelt som sekvenser av icke-NUL-byte, det finns inga konverteringar av sökvägskodning (förutom på Mac och Windows). Därför fungerar användning av sökvägsnamn som inte är ASCII-namn oftast även på plattformar och filsystem som använder äldre utökade ASCII-kodningar. Förvar som skapas på sådana system kommer dock inte att fungera korrekt på UTF-8-baserade system (t.ex. Linux, Mac, Windows) och vice versa. Dessutom antar många Git-baserade verktyg helt enkelt att sökvägsnamn är UTF-8 och kommer inte att kunna visa andra kodningar korrekt.
-
Meddelanden i commitloggar kodas vanligtvis i UTF-8, men andra utökade ASCII-kodningar stöds också. Detta inkluderar ISO-8859-x, CP125x och många andra, men inte UTF-16/32, EBCDIC och CJK multibyte-kodningar (GBK, Shift-JIS, Big5, EUC-x, CP9xx etc.).
Även om vi uppmuntrar att incheckning-loggmeddelandena kodas i UTF-8, är både kärnan och Git Porcelain utformade för att inte tvinga fram UTF-8 på projekt. Om alla deltagare i ett visst projekt tycker att det är bekvämare att använda äldre kodningar, förbjuder inte Git det. Det finns dock några saker att tänka på.
-
gitcommitochgitcommit-treeutfärdar en varning om incheckning-loggmeddelandet som ges till det inte ser ut som en giltig UTF-8-sträng, såvida du inte uttryckligen anger att ditt projekt använder en äldre kodning. Sättet att säga detta är att hai18n.commitEncodingi.git/config-filen, så här:[i18n] commitEncoding = ISO-8859-1
Inchecknings-objekt som skapats med ovanstående inställning registrerar värdet för
i18n.commitEncodingi sinencoding-header. Detta är för att hjälpa andra som tittar på dem senare. Avsaknaden av denna header innebär att inchecknings-loggmeddelandet är kodat i UTF-8. -
gitlog,gitshow,gitblameoch vänner tittar påencoding-headern för ett inchecknings-objekt och försöker koda om loggmeddelandet till UTF-8 om inget annat anges. Du kan ange önskad utdatakodning medi18n.logOutputEncodingi.git/config-filen, så här:[i18n] logOutputEncoding = ISO-8859-1
Om du inte har den här konfigurationsvariabeln, används värdet för
i18n.commitEncodingistället.
Observera att vi medvetet valde att inte koda om incheckning-loggmeddelandet när en incheckning görs för att tvinga fram UTF-8 på inchecknings-objektnivå, eftersom omkodning till UTF-8 inte nödvändigtvis är en reversibel operation.
MILJÖ- OCH KONFIGURATIONSVARIABLER
Redigeraren som används för att redigera inchecknings-loggmeddelandet kommer att väljas från miljövariabeln GIT_EDITOR, konfigurationsvariabeln core.editor, miljövariabeln VISUAL eller miljövariabeln EDITOR (i den ordningen). Se git-var[1] för mer information.
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:
-
commit.cleanup -
Den här inställningen åsidosätter standardinställningen för
--cleanup-alternativet igitcommit. Att ändra standardinställningen kan vara användbart när du alltid vill behålla rader som börjar med kommentartecknet (core.commentChar, standard#) i ditt loggmeddelande, i vilket fall du skulle göragitconfigcommit.cleanupwhitespace(observera att du själv måste ta bort hjälpraderna som börjar med kommentartecknet i incheckning-loggmallen om du gör detta). -
commit.gpgSign -
En boolesk kod som anger om alla incheckningar ska GPG-signeras. Användning av det här alternativet vid operationer som ombasering kan resultera i att ett stort antal incheckningar signeras. Det kan vara praktiskt att använda en agent för att undvika att skriva in din GPG-lösenfras flera gånger.
-
commit.status -
Ett booleskt värde för att aktivera/inaktivera inkludering av statusinformation i inchecknings-meddelandemallen när en editor används för att förbereda inchecknings-meddelandet. Standardvärdet är
true. -
commit.template -
Ange sökvägen till en fil som ska användas som mall för nya inchecknings-meddelanden.
-
commit.verbose -
Ett booleskt värde eller ett heltal för att ange utförlighetsnivån med
gitcommit.
KROKAR
Det här kommandot kan köra hakarna commit-msg, prepare-commit-msg, pre-commit, post-commit och post-rewrite. Se githooks[5] för mer information.
FILER
-
$GIT_DIR/COMMIT_EDITMSG -
Den här filen innehåller inchecknings-meddelandet för en pågående incheckning. Om
gitcommitavslutas på grund av ett fel innan en incheckning skapas, kommer alla inchecknings-meddelanden som har tillhandahållits av användaren (t.ex. i en redigeringssession) att finnas tillgängliga i den här filen, men kommer att skrivas över av nästa anrop avgitcommit.
GIT
En del av git[1]-sviten