Das ist eine Fortschreibung des gestrigen Artikels über das interactive Hinzufügen. Die Leser baten um einen Artikel zum mächtigen git add -p
Kommando, eine Abkürzung zum Patch-Modus beim interaktiven Hinzufügen. Dieses Kommando ist in der Lage, Änderungen in Dateien in kleinere Brocken (hunks) aufzuteilen, so dass du exakt das committen kannst, was du möchtest, und nicht nur die gesamte Datei.
Das Verhalten ist sehr hilfreich. Es erlaubt jeden “Brocken” (hunk) in einer Datei zu versionieren. Die Codezeile bricht vielleicht den Build auf den Maschinen anderer oder auf dem Build-Server, aber nicht bei dir. Du verstehst, was ich meine.
Gehen wir durch ein Beispiel und nehmen wieder Änderungen an der README Datei vor. git diff
zeigt uns folgende vorgenommenen Änderungen an:
diff --git a/README.md b/README.md index 2556dae..45d8b6e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,14 @@ > There is only one way... > ~ Henry Van Dyke +# Project information + +Blah blah blah... + # Want to contribute? If you have ideas about... + +# About + +This blog is just awesome.
Es wurden Änderungen an verschiedenen Stellen in der Datei vorgenommen. Ich möchte jedoch nur die untere Hälfte übergeben. Außerdem, wer braucht schon wirklich Dokumentation? Gib folgendes ein:
git add -p
Und du wirst mit einer Eingabeaufforderung begrüßt, ähnlich wie sie git add -i
anbietet, aber sie hat ziemlich viele Optionen:
Stage this hunk [y/n/a/d/s/e/?]? ? y - stage this hunk n - do not stage this hunk [... removed a few ...] s - split the current hunk into smaller hunks e - manually edit the current hunk ? - print help
Die meisten Optionen sind selbsterklärend, aber wir gehen einfach über die wirklich coolen Optionen. Wir fokusieren uns auf die s
Option, die die Datei in kleinere Code-Brocken (hunks) aufteilen wird, einen oberen “Project Information” Block und einen unteren “About” Block. Sobald alles aufgeteilt ist, wird es dich nur zu den Änderungen zu diesem Brocken befragen:
Split into 2 hunks. @@ -1,6 +1,10 @@ > There is only one way... > ~ Henry Van Dyke +# Project information + +Blah blah blah... + # Want to contribute? If you have ideas about... Stage this hunk [y/n/a/d/j/J/e/?]? n
Hier ignorieren wir den Brocken mit n
und gehen weiter zum nächsten Brocken und fügen ihn mit y
hinzu:
@@ -4,3 +8,7 @@ # Want to contribute? If you have ideas about... + +# About + +This blog is just awesome. Stage this hunk [y/n/a/d/K/e/?]? y
git status
zeigt uns die zu committenden Änderungen und die Änderungen, die für eine Datei auf die staging area kommen. Komisch, aber es macht Sinn: Wir haben die Hälfte der Änderungen auf die staging area gehoben und die andere Hälfte wurde noch nicht zum Index hinzugefügt.
Es gibt auch die e
Option, die das manuelle An- und Abschalten der Brocken in deinem Lieblingseditor erlaubt. Die Option beinhaltet Instruktionen, spiele also damit ein wenig herum, sobald du die Gelegenheit dazu hast (Das ist kein Wortspiel).
Solltest du weitere Geschichten haben, wie dir git add -p
geholfen hat (oder falls ein Feature fehlt), teile es uns in einem Kommentar mit!