Gibt es beim Ausführen git add -p
eine Möglichkeit für Git, neu erstellte Dateien als Hunks auszuwählen?
Wenn ich also eine neue Datei mit dem Namen mache foo.java
und dann git add -p ausführe, kann ich mit git nicht den Inhalt dieser Datei auswählen, der dem Index hinzugefügt werden soll.
git add -N
tun sollen, werden nur die angegebenen nicht verfolgten Dateien zum Index hinzugefügt, jedoch ohne Inhalt.Wenn ich
git add -p someNewFile.txt
eine neue Datei (eine nicht verfolgte Datei) anprobierte, gab git einfach ausNo changes.
und stoppte. Ich musste git sagen, dass ich zuerst die neue Datei verfolgen wollte.Da die Datei jedoch nicht verfolgt wurde, wurde sie als ein riesiges Stück angezeigt, das nicht geteilt werden konnte (weil alles neu ist!). Also musste ich das Stück in kleinere Teile zerlegen. Wenn Sie damit nicht vertraut sind, lesen Sie diese Referenz, um loszulegen.
Update - Hunk-Bearbeitungsinformationen Ich wollte dies aktualisieren, falls die obige Referenz nicht mehr angezeigt wird. Da die neue Datei nicht verfolgt wird,
git add -p
wird jede Zeile in der Datei als neue Zeile in einem Stück angezeigt. Sie werden dann gefragt, was Sie mit diesem Stück tun möchten, und erhalten die folgende Eingabeaufforderung:Stage this hunk [y,n,q,a,d,/,e,?]?
Angenommen, Sie möchten nicht den gesamten Hunk (und damit die gesamte Datei; da ich nicht sicher bin, warum Sie ihn
git add -p
in diesem Fall verwenden möchten?)e
Festschreiben, möchten Sie die Option angeben , um git mitzuteilen, dass Sie ihn bearbeiten möchten das Stück.Sobald Sie git mitteilen, dass Sie das Stück bearbeiten möchten, sollte es Sie in den Editor Ihrer Wahl einfügen, damit Sie Ihre Änderungen vornehmen können. Allen Zeilen sollte ein Präfix vorangestellt werden,
+
und git hat#
am Ende der Datei einige erläuternde Kommentare (vorangestellt mit a ). Löschen Sie einfach alle Zeilen, die Sie beim ersten Festschreiben der Datei nicht möchten. Speichern Sie dann den Editor und beenden Sie ihn.Gits Erklärung der Hunk-Optionen von Git:
quelle
git add -N someNewFile.txt
gefolgt vongit add -p
git add -p
Es geht wirklich darum, Änderungen an bereits verfolgten Dateien hinzuzufügen.Der Befehl zum interaktiven Auswählen der hinzuzufügenden Dateien lautet
git add -i
. Beispielsweise:(Der eigentliche Befehl enthält Farben, die ich hier nicht ausschneiden und einfügen konnte. Es ist also schöner, als es scheint.)
Tatsächlich macht der Befehl p atch
git add -i
dasselbe wiegit add -p
, also ist der zweite eine Teilmenge des ersten (obwohl ich zugebe , dass ich mich selbst liebeadd -p
und hasseadd -i
!).quelle
No changes.
in einer neuen Datei ausgegeben . Das OP fragte, wie Hunks aus einer neuen Datei hinzugefügt werden sollen, nicht aus der gesamten Datei. Ich glaube, hier--intent-to-add
ist noch etwas erforderlich.add -p
allein wird nicht funktionieren, aber diese Antwort legt naheadd -i
, was tut.git add -i
. Sie können jedoch das Gleiche nicht interaktiv tungit add -N
.Es gibt auch einen sehr ähnlichen Ansatz, bei dem die
--cached
Flagge verwendet wird ...1) Verwandeln Sie Ihre nicht bereitgestellten Änderungen in bereitgestellte Änderungen, genau wie Ihre hinzugefügte Datei.
2) Sehen Sie sich das Diff an (Hinweis: Sie können sowohl Änderungen als auch neue Dateien einfügen).
3) Erstellen Sie den Patch.
quelle
git add -p
ist, dass es nicht alles hinzufügt, aber lassen Sie mich auswählen, was ich hinzufügen möchte. Diese Lösung würde blind alles hinzufügen.