6 git-commit - Trage Änderungen im Projektarchiv (repository) ein
11 'git commit' [-a | --interactive] [-s] [-v] [-u<mode>] [--amend]
12 [(-c | -C) <commit>] [-F <file> | -m <msg>]
13 [--allow-empty] [--no-verify] [-e] [--author=<author>]
14 [--cleanup=<mode>] [--] [[-i | -o ]<file>...]
18 Speichere den aktuellen Inhalt des Index gemeinsam mit einer die Änderungen
19 des Benutzers beschreibenden Log Nachricht als neue Eintragung (commit) im
22 Der neue Inhalt kann auf verschiedene Arten angegeben werden:
24 1. Durch Verwendung von 'git-add', um Änderungen, vor Aufruf des
25 'git commit' Befehls, schrittweise zum Index hinzuzufügen (Anmerkung:
26 auch lediglich modifizierte Dateien müssen "hinzugefügt" werden);
28 2. Durch Verwendung von 'git-rm' um Dateien, vor Aufruf des 'git commit'
29 Befehls, aus dem Arbeitsbereich, und dem Index zu entfernen,
31 3. Durch die Angabe von Dateien als Argumente des 'git commit' Befehls,
32 wodurch die Eintragung (commit) aller im Index vorgemerkten Änderungen
33 ignoriert wird, und statt dessen der aktuelle Inhalt der aufgezählten
34 Dateien im Projektarchiv (repository) eingetragen wird.
36 4. Durch Verwendung des -a Schalters des 'git commit' Befehls, um zuvor
37 automatisch die Änderungen aller bekannten Dateien (also aller Dateien
38 die im Index bereits bekannt sind) hinzuzufügen ('git add'), und um
39 automatisch alle Dateien die aus dem Arbeitsbereich gelöscht wurden zu
42 5. Durch Verwendung des --interactive Schalters des 'git commit' Befehls,
43 um zuvor für jede Datei einzeln zu entscheiden ob diese Teil der
44 Eintragung (commit) sein soll. Dies wird derzeit durch
45 'git-add --interactive' bewerkstelligt.
47 Der 'git-status' Befehl kann, durch Angabe der selben Parameter die man
48 für 'git commit' benutzen würde, dazu verwendet werden, um einen Überblick
49 darüber zu erhalten, welche Dateien bei jeder der obigen Optionen in der
50 nächsten Eintragung (commit) beinhaltet sein würden.
52 Wurde eine Eintragung (commit) durchgeführt und unmittelbar danach
53 ein Fehler erkannt, so kann diese mit 'git-reset' rückgängig gemacht werden.
60 Führe die Bereitstellung (staging) und Eintragung (commit) aller
61 modifizierten und gelöschten Dateien durch.
62 Es werden ausschließlich Dateien behandelt die in git bekannt
63 sind, alle für git neuen Dateien werden somit nicht eingetragen.
67 --reuse-message=<commit>::
68 Nimm eine existierende Eintragung (commit) und verwende die
69 Eintragungsbemerkung (commit message) und die Autoreninformation
70 (inklusive Zeitstempel) für die aktuelle Eintragung.
73 --reedit-message=<commit>::
74 Ähnlich wie '-C' allerdings wird mit '-c' der Editor
75 aufgerufen, wodurch der Benutzer die Eintragungsbemerkung
76 vor der Eintragung überarbeiten kann.
80 Nimm die Eintragungsbemerkung (commit message) der spezifizierten
81 Datei. Mit '-' wird die Bemerkung von der Standard Eingabe gelesen.
84 Überschreibe den Namen des in der Eintragung verwendeten Authors.
85 Benutze das `A U Thor <author@example.com>` Format.
89 Verwende die angegebene <msg> als Eintragungsbemerkung
94 Verwende den Inhalt der angegebenen Datei als initiale
95 Version der Eintragungsbemerkung. Der Editor wird aufgerufen
96 um weitere Änderungen vornehmen zu können. Wird eine Bemerkung
97 mittels der Optionen '-m' oder '-F' angegeben, so hat die
98 '-t' Option keine Auswirkung. Diese Angabe überschreibt die
99 'commit.template' Konfigurationsvariable.
103 Füge eine Unterschriftenzeile am Ende der Eintragungsbemerkung
104 (commit message) hinzu.
108 Diese Option schaltet die pre-commit und commit-msg
109 Einsprungspunkte (hooks) aus. Siehe auch linkgit:githooks[5].
112 Normalerweise ist das Aufzeichnen einer Eintragung welche exakt
113 den gleichen Inhalt wie sein Vorgänger hat ein Fehler, und
114 'git commit' verhindert eine derartige Eintragung. Mit dieser
115 Option kann diese Sicherheitsvorkehrung ausgeschalten werden,
116 was hauptsächlich für fremde SCM Schnittstellen-Skripte
120 Diese Option bestimmt, wie Eintragungsbemerkungen (commit
121 message) 'aufgeräumt' werden. Der '<mode>' kann sein:
122 'verbatim', 'whitespace', 'strip', oder 'default'.
123 Der 'default' Modus entfernt führende und am Ende befindliche
124 Leerzeilen und #Bemerkungen wenn die Eintragungsbemerkung
125 editiert wurde. Ansonst werden nur Leerzeichen (whitespaces)
126 entfernt. Der 'verbatim' Modusläßt die Eintragungsbemerkung
127 gänzlich unverändert, 'whitespace' entfernt vorne und hinten
128 die Leerzeichen und 'strip' entfernt sowohl Leerzeichen
129 wie auch Kommentare (Zeilen die mit '#' beginnen).
133 Die Eintragungsbemerkungen (commit message) einer Datei ('-F'),
134 der Befehlszeile ('-m') oder einer Eintragung ('-C') werden
135 normalerweise nicht weiter bearbeitet. Diese Option ermöglicht
136 das weitere Editieren dieser Bemerkung bevor die Eintragung
137 (commit) durchgeführt wird.
140 Ändere (ersetzend) die letzte Eintragung (commit) im Projektarchiv
141 (tip of branch). Der Arbeitsbaum im Index kann vorher wie gewöhnlich
142 mit 'git add', etc bearbeitet werden (das beinhaltet auch -i/-o
143 und explizite Pfadangaben). Der Editor wird mit der
144 Eintragungsbemerkung (commit message) der letzten Version im
145 Projektarchiv vorbefüllt. Die so erzeugte Eintragung (commit) ersetzt
146 die letze Eintragung im Projektarchiv, welche damit im
147 Projektarchiv ausgelöscht wird. Handelte es sich um eine
148 Zusammenführung (merge), erhält die Eintragung die selben Eltern
149 wie die ersetzte Eintragung.
152 Der Befehl entspricht in etwa:
154 $ git reset --soft HEAD^
155 $ ... führe die notwendigen Änderungen im Index durch ...
156 $ git commit -c ORIG_HEAD
159 er kann aber auch dazu verwendet werden um eine zusammenführende Eintragung
160 (merge commit) zu ersetzen
165 Bevor die Eintragung der im Index gespeicherten Änderungen
166 durchgeführt wird, füge den Inhalt der in der Befehlszeile
167 angegebenen Dateipfade ebenfalls dazu. Dies wird normalerweise
168 nur beim Abschließen der Zusammenführung konkurierender
169 Änderungen (conflicted merge) verwendet.
173 Führe die Eintragung (commit) ausschließlich mit den in der
174 Befehlszeile angegebenen Dateipfaden durch, und ignoriere sämtliche
175 im Index vorbereiteten Änderungen. Dies ist der Standardmodus
176 von 'git commit' wenn Dateipfade in der Befehlszeile
177 angegeben wurden. Wird diese Option gemeinsam mit '--amend'
178 angegeben, dann müssen keine Dateiangaben getätigt werden.
179 Dies kann verwendet werdenum die letzte Eintragung abzuändern
180 (zB Eintragungsbemerkung korrigieren) ohne die zwischenzeitlich
181 bereits im Index vorbereiteten Änderungen zu übernehmen.
184 --untracked-files[=<mode>]::
185 Zeige alle von git nicht verwalteten (untracked) Dateien an
188 Der <mode> Parameter ist optional, und steuert die Behandlung der Dateien.
189 Die möglichen Optionen sind:
192 - 'no' - zeige keine von git nicht verwalteten Dateien an
193 - 'normal' - zeige unverwaltete Dateien und Verzeichnisse
194 - 'all' - zeige zusätzlich die einzelnen Dateien in den
195 unverwalteten Verzeichnissen
198 Siehe linkgit:git-config[1] für die Verwendung von Konfigurationsvariablen
199 um die Standardoption die verwendet wird wenn der Parameter nicht angegeben
204 Zeige den Unterschied (diff) zwischen der HEAD Eintragung und dem
205 was eingetragen werden würde am Ende der Eintragungsbemerkung.
206 Beachte: Die Zeilen der diff Ausgabe enthalten keine
207 führenden Kommentarzeichen ('#')!
211 Unterdrücke die zusammenfassende Nachricht über die Eintragung.
214 Diese Option kann dazu verwendet werden, Befehlszeilenoptionen
215 von der Liste von Dateien zu trennen. Dies ist sinnvoll, wenn
216 Dateinamen mit Befehlszeilenoptionen verwechselt werden könnten.
219 Werden in der Befehlszeile Dateien angegeben, so wird der Inhalt
220 dieser Dateien eingetragen, ohne die bereits im Index vorbereiteten
221 Änderungen aufzuzeichnen. Die Dateiinhalte werden außerdem für
222 die nächste Eintragung im Index bereitgestellt (zusätzlich zu den
223 dort bereits vorbereiteten Änderungen).
228 Beim Aufzeichnen der eigenen Arbeit, wird der Inhalt der veränderten Dateien
229 im Arbeitsbereich mit 'git add' temporär in einem Zwischenbereich
230 ("Index" genannt) abgelegt. Die mit 'git add' vorbereiteten Änderungen einer
231 Datei können mit `git reset HEAD -- <file>` wieder aus dem Index entfernt
232 werden, ohne dadurch die Datei selbst zu verändern. Nachdem die gewünschten
233 Änderungen im Index vorbereitet wurden kann dieser mit dem 'git commit'
234 Befehl im Projektarchiv eingetragen (commited) werden. Ein Beispiel:
243 Anstatt die Dateien nach jeder Änderung einzeln im Index vorzubereiten
244 kann man 'git commit' anweisen die Änderungen aller aktuell in git
245 verwalteten Dateien selbständig mit 'git add' und 'git rm' vorzubereiten.
246 Wurden keine anderen Dateien im Arbeitsbereich geändert, erzielt das
247 diese Beispiel das gleiche Resultat wie das vorhergehende Beispiel:
255 Der Befehl 'git commit -a' betrachtet zuerst den Arbeitsbereich, erkennt
256 das hello.c geändert und goodbye.c entfernt wurden, und führt intern die
257 notwendigen 'git add' und 'git rm' funktionen aus.
259 Wurden im Index Änderungen an mehreren Dateien vorbereitet, kann
260 die Reihenfolge in der diese Änderungen eingetragen (commited)
261 werden, durch die Angabege einzelner Dateipfade geändert werden.
262 Werden Dateipfade angegeben, trägt der Befehl ausschließlich
263 Änderungen dieser Dateien im Projektarchiv ein.
266 $ edit hello.c hello.h
267 $ git add hello.c hello.h
269 $ git commit Makefile
272 Die hier erzeugte Eintragung (commit) enthält ausschließlich
273 die Änderungen der Datei 'Makefile'. Die vorbereiteten Änderungen
274 an 'hello.c' und 'hello.h' sind in dieser Eintragung nicht enthalten,
275 sie bleiben allerdings weiterhin im Index vorbereitet und
276 gehen nicht verloren. Wird anschließend der folgende Befehl aufgerufen:
282 werden in einer zweiten Eintragung (commit) die Änderungen an
283 'hello.c' und 'hello.h' im Projektarchiv eingetragen.
285 Nach einer Zusammenführung (merge, durchgeführt mit 'git-merge'
286 oder 'git-pull') die Aufgrund von Konflikten abgebrochen wird,
287 sind sauber zusammengeführte Pfade bereits im Index vorbereitet
288 und könnten eingetragen (commited) werden. Alle Pfade mit
289 Konflikten bleiben im nicht zusammengeführten Zustand. Mittels
290 'git status' kann überprüft werden, welche Dateipfade die
291 Konflikte enthalten. Nachdem die Konflikte im Arbeitsbereich
292 manuell aufgelöst wurden können die betroffenen Dateien wie
293 gewohnt mit 'git add' im Index für die Eintragung vorbereitet
297 $ git status | grep unmerged
303 Nachdem die Konflikte aufgelöst und im Index vorbereitet wurden
304 zeigt 'git ls-files -u' die betreffenden Dateipfade nicht mehr an.
305 Durch 'git commit' können die Änderungen abschließend im
306 Projektarchiv eingetragen (commited) werden:
312 Mann kann die '-a' Option allerdings auch einfach dazu verwenden
313 um weniger tippen zu müssen. Eine Einschränkung besteht allerdings
314 dahingehend, daß dies bei einer Zusammenführung (merge) nicht
315 verwendet werden kann, da diese mit einer einzelnen Eintragung (commit)
316 erfolgen muß. Bei Verwendung der '-a' Option sind keine weiteren
317 Pfadangaben erlaubt (Ausnahme bei gleichzeitiger Verwendung der '-i' Option).
323 Obwohl es technisch nicht erforderlich ist, ist es eine gebräuchlich
324 die Eintragungsbemerkung (commit message) mit einer einzelnen kurzen
325 Zusammenfassung (weniger als 50 Zeichen) zu beginnen, gefolgt von einer
326 Leerzeile und weiterführender Information. So können zB Werkzeuge die
327 Eintragungen in emails verpacken die erste Zeile als Betreff und den
328 Rest als Mailinhalt verwenden.
332 ENVIRONMENT AND CONFIGURATION VARIABLES
333 ---------------------------------------
334 Der Editor zum Bearbeiten der Eintragungsbemerkung wird durch die
335 GIT_EDITOR Umgebungsvariable, die core.editor Konfigurationsvariable
336 die VISUAL Umgebungsvariable oder die EDITOR Umgebungsvariable
337 festgelegt (in dieser Reihenfolge).
341 Dieser Befehl kann die folgenden Einsprungspunkte (hooks) aufrufen:
342 `commit-msg`, `prepare-commit-msg`, `pre-commit` und `post-commit`.
343 Siehe linkgit:githooks[5] für weitere Information.
351 linkgit:git-merge[1],
352 linkgit:git-commit-tree[1]
356 Geschrieben von Linus Torvalds <torvalds@osdl.org> und
357 Junio C Hamano <gitster@pobox.com>
362 Teil der linkgit:git[1] Suite.