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.49.1 → 2.53.0 no changes
-
2.49.0
2025-03-14
- 2.45.1 → 2.48.2 no changes
-
2.45.0
2024-04-29
- 2.43.1 → 2.44.4 no changes
-
2.43.0
2023-11-20
- 2.35.1 → 2.42.4 no changes
-
2.35.0
2022-01-24
- 2.31.1 → 2.34.8 no changes
-
2.31.0
2021-03-15
- 2.27.1 → 2.30.9 no changes
-
2.27.0
2020-06-01
- 2.25.2 → 2.26.3 no changes
- 2.25.1 no changes
- 2.22.1 → 2.25.0 no changes
-
2.22.0
2019-06-07
- 2.14.6 → 2.21.4 no changes
-
2.13.7
2018-05-22
- 2.12.5 no changes
-
2.11.4
2017-09-22
- 2.10.5 no changes
-
2.9.5
2017-07-30
- 2.7.6 → 2.8.6 no changes
-
2.6.7
2017-05-05
- 2.5.6 no changes
-
2.4.12
2017-05-05
- 2.1.4 → 2.3.10 no changes
-
2.0.5
2014-12-17
SYNOPSIS
git commit-tree <träd> [(-p <förälder>)…] git commit-tree [(-p <parent>)…] [-S[<keyid>]] [(-m <meddelande>)…] [(-F <fil>)…] <träd>
BESKRIVNING
Detta är vanligtvis inte vad en slutanvändare vill köra direkt. Se git-commit[1] istället.
Skapar ett nytt inchecknings-objekt baserat på det angivna trädobjektet och genererar det nya inchecknings-objekt- id:t vid stdout. Loggmeddelandet läses från standardindata, såvida inte alternativen -m eller -F anges.
Alternativen -m och -F kan anges hur många gånger som helst, i valfri ordning. Meddelandet i inchecknings-loggen kommer att skrivas i den ordning alternativen anges.
Ett inchecknings-objekt kan ha ett valfritt antal föräldrar. Med exakt en förälder är det en vanlig incheckning. Att ha mer än en förälder gör incheckningen till en sammanslagning mellan flera historik-linjer. Initiala (root) commits har inga föräldrar.
Medan ett träd representerar ett visst katalogtillstånd i en arbetskatalog, representerar en incheckning det tillståndet i "tid" och förklarar hur man kommer dit.
Normalt sett skulle en incheckning identifiera ett nytt "HEAD"-tillstånd, och även om Git inte bryr sig om var du sparar anteckningen om det tillståndet, tenderar vi i praktiken att bara skriva resultatet till filen som .git/HEAD pekar på, så att vi alltid kan se vad det senaste incheckade tillståndet var.
ALTERNATIV
- <träd>
-
Ett befintligt trädobjekt.
- -p <förälder>
-
Varje
-panger id:t för ett överordnat inchecknings-objekt. - -m <meddelande>
-
Ett stycke i incheckning-loggmeddelandet. Detta kan ges mer än en gång och varje <meddelande> blir ett eget stycke.
- -F <fil>
-
Läs inchecknings-loggmeddelandet från den givna filen. Använd
-för att läsa från standardindata. Detta kan anges mer än en gång och innehållet i varje fil blir ett eget stycke. - -S[<nyckeld>]
- --gpg-sign[=<nyckelid>]
- --no-gpg-sign
-
GPG-signera incheckningar. Argumentet
keyidär valfritt och används som standard för committer-identiteten; om det anges måste det fästas vid alternativet utan mellanslag.--no-gpg-signär användbart för att ångra ett--gpg-sign-alternativ som angetts tidigare på kommandoraden.
Inchecknings-information
En incheckning inkapslar:
-
alla överordnade objekt-id:n
-
författarnamn, e-postadress och datum
-
namn och e-postadress för incheckaren och inchecknings-tid.
En inchecknings-kommentar läses från stdin. Om en ändringsloggpost inte anges via omdirigering med "<", kommer git commit-tree bara att vänta på att en ska anges och avslutas med ^D.
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.ÅÅÅÅ.
Diskussion
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.
GIT
En del av git[1]-sviten