Einrichtung und Konfiguration
Projekte holen und erstellen
Grundlegende Snapshots
Branching und Merging
Projekte teilen und aktualisieren
Inspektion und Vergleich
Patching
Debugging
Externe Systeme
Server-Administration
Anleitungen
- gitattributes
- Konventionen der Kommandozeile
- Tägliches Git
- Häufig gestellte Fragen (FAQ)
- Glossar
- Hooks
- gitignore
- gitmodules
- Revisionen
- Submodule
- Tutorial
- Workflows
- Alle Anleitungen...
Administration
Plumbing-Befehle
- 2.49.1 → 2.52.0 keine Änderungen
-
2.49.0
2025-03-14
- 2.45.1 → 2.48.2 keine Änderungen
-
2.45.0
2024-04-29
- 2.43.1 → 2.44.4 keine Änderungen
-
2.43.0
2023-11-20
- 2.35.1 → 2.42.4 keine Änderungen
-
2.35.0
2022-01-24
- 2.31.1 → 2.34.8 keine Änderungen
-
2.31.0
2021-03-15
- 2.27.1 → 2.30.9 keine Änderungen
-
2.27.0
2020-06-01
- 2.25.2 → 2.26.3 keine Änderungen
- 2.25.1 keine Änderungen
- 2.22.1 → 2.25.0 keine Änderungen
-
2.22.0
2019-06-07
- 2.14.6 → 2.21.4 keine Änderungen
-
2.13.7
2018-05-22
- 2.12.5 keine Änderungen
-
2.11.4
2017-09-22
- 2.10.5 keine Änderungen
-
2.9.5
2017-07-30
- 2.7.6 → 2.8.6 keine Änderungen
-
2.6.7
2017-05-05
- 2.5.6 keine Änderungen
-
2.4.12
2017-05-05
- 2.1.4 → 2.3.10 keine Änderungen
-
2.0.5
2014-12-17
SYNOPSIS
git commit-tree <tree> [(-p <parent>)…] git commit-tree [(-p <parent>)…] [-S[<keyid>]] [(-m <message>)…] [(-F <file>)…] <tree>
BESCHREIBUNG
Dies ist normalerweise nicht das, was ein Endbenutzer direkt ausführen möchte. Siehe stattdessen git-commit[1].
Erstellt ein neues Commit-Objekt basierend auf dem bereitgestellten Baum-Objekt und gibt die neue Commit-Objekt-ID auf stdout aus. Die Log-Nachricht wird vom Standard-Input gelesen, es sei denn, die Optionen -m oder -F sind angegeben.
Die Optionen -m und -F können beliebig oft und in beliebiger Reihenfolge angegeben werden. Die Commit-Log-Nachricht wird in der Reihenfolge zusammengestellt, in der die Optionen angegeben werden.
Ein Commit-Objekt kann beliebig viele Eltern haben. Mit genau einem Elternteil ist es ein gewöhnliches Commit. Mehrere Eltern machen das Commit zu einem Merge zwischen mehreren Verläufe. Initiale (Root-)Commits haben keine Eltern.
Während ein Baum einen bestimmten Verzeichniszustand eines Arbeitsverzeichnisses repräsentiert, repräsentiert ein Commit diesen Zustand in der "Zeit" und erklärt, wie man dorthin gelangt.
Normalerweise würde ein Commit einen neuen "HEAD"-Zustand identifizieren, und während es Git egal ist, wo Sie die Notiz über diesen Zustand speichern, speichern wir sie in der Praxis tendenziell einfach in der Datei, auf die .git/HEAD zeigt, damit wir immer sehen können, was der letzte committete Zustand war.
OPTIONEN
- <tree>
-
Ein bestehendes Baum-Objekt.
- -p <parent>
-
Jedes
-pgibt die ID eines Eltern-Commit-Objekts an. - -m <message>
-
Ein Absatz in der Commit-Log-Nachricht. Dies kann mehrfach angegeben werden und jede <message> wird zu einem eigenen Absatz.
- -F <file>
-
Liest die Commit-Log-Nachricht aus der angegebenen Datei. Verwenden Sie
-, um aus dem Standard-Input zu lesen. Dies kann mehrfach angegeben werden und der Inhalt jeder Datei wird zu einem eigenen Absatz. - -S[<keyid>]
- --gpg-sign[=<keyid>]
- --no-gpg-sign
-
GPG-sign Commits. Das Argument
keyidist optional und standardmäßig die Committer-Identität; wenn es angegeben wird, muss es ohne Leerzeichen an die Option angehängt werden.--no-gpg-signist nützlich, um eine zuvor auf der Kommandozeile gegebene Option--gpg-signzu widerrufen.
Commit-Informationen
Ein Commit kapselt
-
alle Elternobjekt-IDs
-
Autorname, E-Mail und Datum
-
Committersname und E-Mail und die Commit-Zeit.
Ein Commit-Kommentar wird von stdin gelesen. Wenn kein Changelog-Eintrag über "<" Umleitung bereitgestellt wird, wartet git commit-tree einfach darauf, dass einer eingegeben und mit ^D beendet wird.
DATUMSFORMATE
Die Umgebungsvariablen GIT_AUTHOR_DATE und GIT_COMMITTER_DATE unterstützen die folgenden Datumsformate:
- Git internes Format
-
Es ist <unix-timestamp> <time-zone-offset>, wobei <unix-timestamp> die Anzahl der Sekunden seit der UNIX-Epoche ist. <time-zone-offset> ist ein positiver oder negativer Offset von UTC. Zum Beispiel ist CET (das 1 Stunde vor UTC liegt)
+0100. - RFC 2822
-
Das Standard-Datumsformat wie in RFC 2822 beschrieben, zum Beispiel
Thu,07Apr200522:13:13+0200. - ISO 8601
-
Zeit und Datum gemäß dem ISO 8601-Standard, zum Beispiel
2005-04-07T22:13:13. Der Parser akzeptiert auch ein Leerzeichen anstelle desT-Zeichens. Bruchteile von Sekunden werden ignoriert, zum Beispiel wird2005-04-07T22:13:13.019als2005-04-07T22:13:13behandelt.HinweisZusätzlich werden Datumsangaben in den folgenden Formaten akzeptiert: JJJJ.MM.TT,MM/TT/JJJJundTT.MM.JJJJ.
Diskussion
Git ist bis zu einem gewissen Grad zeichenkodierungsunabhängig.
-
Der Inhalt der Blob-Objekte sind uninterpretierte Bytefolgen. Auf Kern-Ebene erfolgt keine Kodierungsumwandlung.
-
Pfadnamen werden in UTF-8 Normalisierungsform C kodiert. Dies gilt für Baum-Objekte, die Indexdatei, Ref-Namen sowie für Pfadnamen in Kommandozeilenargumenten, Umgebungsvariablen und Konfigurationsdateien (
.git/config(siehe git-config[1]), gitignore[5], gitattributes[5] und gitmodules[5]).Beachten Sie, dass Git auf Kern-Ebene Pfadnamen einfach als Folgen von Nicht-NUL-Bytes behandelt, es gibt keine Pfadnamen-Kodierungskonvertierungen (außer unter Mac und Windows). Daher funktionieren nicht-ASCII-Pfadnamen meist auch auf Plattformen und Dateisystemen, die Legacy-Erweiterte-ASCII-Kodierungen verwenden. Repositories, die auf solchen Systemen erstellt wurden, funktionieren jedoch nicht ordnungsgemäß auf UTF-8-basierten Systemen (z. B. Linux, Mac, Windows) und umgekehrt. Zusätzlich gehen viele Git-basierte Werkzeuge einfach davon aus, dass Pfadnamen UTF-8 sind und werden andere Kodierungen nicht korrekt anzeigen.
-
Commit-Log-Nachrichten sind typischerweise in UTF-8 kodiert, aber auch andere erweiterte ASCII-Kodierungen werden unterstützt. Dazu gehören ISO-8859-x, CP125x und viele andere, aber *nicht* UTF-16/32, EBCDIC und CJK-Multibyte-Kodierungen (GBK, Shift-JIS, Big5, EUC-x, CP9xx etc.).
Obwohl wir ermutigen, dass die Commit-Log-Nachrichten in UTF-8 kodiert werden, sind sowohl der Kern als auch Git Porcelain so konzipiert, dass sie Projekten keine UTF-8 aufzwingen. Wenn alle Teilnehmer eines bestimmten Projekts es bequemer finden, Legacy-Kodierungen zu verwenden, verbietet Git dies nicht. Es gibt jedoch ein paar Dinge zu beachten.
-
gitcommitundgitcommit-treegeben eine Warnung aus, wenn die ihnen übergebene Commit-Log-Nachricht keine gültige UTF-8-Zeichenkette zu sein scheint, es sei denn, Sie geben explizit an, dass Ihr Projekt eine Legacy-Kodierung verwendet. Dies geschieht durch Festlegen voni18n.commitEncodingin der Datei.git/config, wie folgt[i18n] commitEncoding = ISO-8859-1
Mit der obigen Einstellung erstellte Commit-Objekte speichern den Wert von
i18n.commitEncodingin ihrerencoding-Kopfzeile. Dies soll anderen Personen helfen, die sie später betrachten. Das Fehlen dieser Kopfzeile impliziert, dass die Commit-Log-Nachricht in UTF-8 kodiert ist. -
gitlog,gitshow,gitblameund Freunde betrachten denencodingHeader eines Commit-Objekts und versuchen, die Log-Nachricht in UTF-8 neu zu kodieren, sofern nicht anders angegeben. Sie können die gewünschte Ausgabe-Kodierung miti18n.logOutputEncodingin der.git/config-Datei angeben, wie folgt:[i18n] logOutputEncoding = ISO-8859-1
Wenn Sie diese Konfigurationsvariable nicht haben, wird stattdessen der Wert von
i18n.commitEncodingverwendet.
Beachten Sie, dass wir uns bewusst entschieden haben, die Commit-Log-Nachricht nicht neu zu kodieren, wenn ein Commit durchgeführt wird, um UTF-8 auf der Ebene des Commit-Objekts zu erzwingen, da die Neukodierung nach UTF-8 nicht unbedingt eine reversible Operation ist.
GIT
Teil der git[1] Suite