Ich liebe Git Add - Interactive . Es ist jetzt Teil meines täglichen Workflows.
Das Problem scheint, dass es mit nicht verfolgten Dateien nicht funktioniert. Ich möchte eine neue Datei verfolgen, aber nur einen Teil davon hinzufügen, dh einige Teile dieser neuen Datei können noch nicht bereitgestellt werden.
Mit git add -i kann ich beispielsweise die Patch-Option auswählen und sogar einzelne Hunks bearbeiten, um Teile des neuen Codes zu inszenieren, wobei Debug-Code-Kommentare nicht bereitgestellt werden. Ich liebe es, auf diese Weise zu arbeiten, weil es offensichtlich macht, an welchen Stellen des Mega-Patches, an dem ich gerade arbeite, noch Arbeit benötigt wird.
Leider scheine ich mit einer nicht verfolgten Datei nicht in der Lage zu sein, dasselbe zu tun. Entweder inszeniere ich die ganze Datei oder nichts. Die Problemumgehung, die ich verwendet habe, besteht darin, eine neue Datei bereitzustellen oder sogar festzuschreiben, wenn sie leer ist, und dann einzelne Änderungen auf die übliche Weise bereitzustellen. Aber diese Lösung fühlt sich wie ein schmutziger Hack an und wenn ich sie vergesse oder meine Meinung ändere, entstehen mehr Probleme, als es geben sollte.
Die Frage ist also: Wie kann nur ein Teil einer neuen Datei inszeniert werden, damit diese neue Datei verfolgt wird, aber der gesamte Inhalt oder Teile davon nicht bereitgestellt werden?
</shame>
-N
Entdeckung, danke! Obwohl ich es-p
in diesem Fall lieber kombinieren würde .gid add -N the_file
&git add -p
. Man sollte hinzufügen, dass das-N
auch mit-A
Der einfachste Weg, dies zu tun (und imho interaktive Inszenierung im Allgemeinen), ist
git gui
. Es wird mit git geliefert und sollte auf fast allen Plattformen funktionieren, die von git unterstützt werden.Einfach ausführen
git gui
und eine GUI wird geöffnet, mit der Hunks und sogar einzelne Zeilen von verfolgten und nicht verfolgten Dateien bereitgestellt und aufgehoben werden können.quelle
git gui
. In Debian befindet es sich beispielsweise in einem separaten Paket namens 'git-gui'.git gui
nie funktioniert. Tatsächlich werden diese Menüoptionen deaktiviert .git gui
für eine neue Datei verwenden möchten , müssen Siegit add -N new_file
zuerst ausführen - siehe Richard Hansens Antwort.Einfache Demo:
e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
stattdessen den Hash fest codieren . Ich empfehle nicht, das zu tunNUL:
anstelle von verwenden/dev/null
. Verwenden Sie andernfalls so etwas wieecho -n '' | git hash-object --stdin -w
Jetzt enthält der Index
newfile
den leeren Blob, und der leere Blob wurde in die Objektdatenbank eingegeben, falls er noch nicht vorhanden war:Dies sollte genau das sein, was Sie wollen. Darf ich auch das vim fugitive Plugin für eine sehr intelligente Indexverwaltung empfehlen (siehe Better git add -p? )
quelle
Bearbeiten: Dies scheint jetzt nicht zu funktionieren. Ich bin mir sicher, dass es vorher war (auf Git 1.7.1). Falls es nicht funktioniert, schlage ich eine Inszenierung vor,
/dev/null
wie siehe oben vorschlägt:Wenn Sie unter Windows (ohne
/dev/null
) arbeiten, können Sie es durch den Pfad zu einer leeren Datei ersetzen.Ursprüngliche Antwort
Sie wollen
Dies fügt mir nicht verfolgte Dateien hinzu. Von der Manpage:
quelle
git add -p newfile
funktioniert überhaupt nicht (nu-Effekt) undgit add --interactive
'[a] dd untracked' hat den Effekt, dergit add newfile
hat; Bearbeiten auch mit git 1.7.5.3 überprüft; keine WürfelNur zur Aufzeichnung einer anderen Möglichkeit: Ich benutze
Und dann können Sie Hunks inszenieren oder an Ort und Stelle bearbeiten.
quelle
add -N
mitadd -i
. Ich habe das nur hinzugefügt,add -p
anstatt auchadd -i
zu arbeiten.