Einer der Befehle, die ich in Git unglaublich nützlich finde, ist git add -u
, alles außer nicht verfolgten Dateien in den Index zu werfen. Gibt es eine Umkehrung davon? In den letzten Monaten befand ich mich häufig in einer Position, in der ich dem Index interaktiv einige Aktualisierungen hinzugefügt habe und alle nicht verfolgten Dateien zu diesem Index hinzufügen möchte, bevor ich ein Commit durchführe.
Gibt es eine Möglichkeit, nur die nicht verfolgten Dateien zum Index hinzuzufügen, ohne sie einzeln zu identifizieren? Ich sehe in den Hilfedokumenten nichts Offensichtliches, aber vielleicht fehlt es mir?
Vielen Dank.
.gitignore
speziell für diesen Zweck entwickelt, nichtgit add -u
.Antworten:
Es ist einfach mit
git add -i
. Geben Siea
(für "untracked hinzufügen"), dann*
(für "all") und dannq
(zum Beenden) ein und Sie sind fertig.So machen Sie es mit einem einzigen Befehl:
echo -e "a\n*\nq\n"|git add -i
quelle
echo -e "a\n*\nq\n"|git add -i
Argument list too long
... so nah!git add -i
dann untracked4
hinzuzufügen, dann*
für alle dannq
aufzuhörengit ls-files -o --exclude-standard
Gibt nicht verfolgte Dateien an, sodass Sie wie folgt vorgehen können (oder einen Alias hinzufügen können):quelle
-o, --others
Show other (i.e. untracked) files in the output
Nicht genau das, wonach Sie suchen, aber ich fand das sehr hilfreich:
Fügt alle Dateien zum Index hinzu, jedoch ohne deren Inhalt. Dateien, die nicht verfolgt wurden, verhalten sich jetzt so, als ob sie verfolgt würden. Ihr Inhalt wird in angezeigt
git diff
und Sie können ihn dann interaktiv mit hinzufügengit add -p
.quelle
git commit -p
, durch neue Dateien zu gehen.Sie können dies zu Ihrer ~ / .gitconfig-Datei hinzufügen:
Führen Sie dann über die Befehlszeile einfach Folgendes aus:
quelle
Die Leute haben vorgeschlagen, die Ausgabe von
git ls-files
angit add
zu leiten , aber dies wird in Fällen fehlschlagen, in denen Dateinamen Leerzeichen oder Glob-Zeichen enthalten, wie z*
.Der sichere Weg wäre zu verwenden:
Dabei
-z
weist git an, Zeilenterminatoren zu verwenden\0
, und-0
xargs wird das Gleiche mitgeteilt. Der einzige Nachteil dieses Ansatzes besteht darin, dass die-0
Option nicht dem Standard entspricht und daher nur von einigen Versionenxargs
unterstützt wird.quelle
git ls-files
listet die Dateien im aktuellen Verzeichnis auf. Wenn Sie nicht verfolgte Dateien von einer beliebigen Stelle im Baum auflisten möchten, funktioniert dies möglicherweise besser:So fügen Sie alle nicht verfolgten Dateien zum Baum hinzu:
quelle
Ich habe es versucht und es hat funktioniert:
git stash
legt nur alle geänderten verfolgten Dateien in einem separaten Stapel ab, dann bleiben übrig gebliebene Dateien nicht verfolgte Dateien. Wenn Sie dies tun,git add .
werden alle nicht nachverfolgten Dateien nach Bedarf bereitgestellt. Schließlich, um alle geänderten Dateien vom Stapel zurück zu bekommen, indem Sie dies tungit stash pop
quelle
Wenn Sie Tausende von nicht verfolgten Dateien haben (ugh, fragen Sie nicht)
git add -i
, funktioniert dies beim Hinzufügen nicht*
. Sie erhalten eine FehlermeldungArgument list too long
.Wenn Sie dann auch unter Windows arbeiten (fragen Sie nicht nach Nummer 2 :-) und PowerShell zum Hinzufügen aller nicht verfolgten Dateien verwenden müssen, können Sie diesen Befehl verwenden:
quelle
git ls-files -o --exclude-standard | % { git add $_ }
Viele gute Tipps hier, aber in Powershell konnte ich es nicht zum Laufen bringen.
Ich bin ein .NET-Entwickler und wir verwenden hauptsächlich noch Windows-Betriebssysteme, da wir .Net Core und plattformübergreifende Anwendungen nicht so häufig verwendet haben. Daher verwende ich Git täglich in einer Windows-Umgebung, in der die verwendete Shell häufiger Powershell ist und nicht Git Bash.
Mit dem folgenden Verfahren können Sie eine Alias-Funktion zum Hinzufügen von nicht verfolgten Dateien in einem Git-Repository erstellen.
In Ihrer $ -Profildatei von Powershell (falls es fehlt - Sie können Folgendes ausführen: New-Item $ Profile)
Notizblock $ Profil
Fügen Sie nun diese Powershell-Methode hinzu:
Speichern Sie die $ profile-Datei und laden Sie sie erneut in Powershell. Laden Sie dann Ihre $ profile-Datei neu mit :. $ profile
Dies ähnelt dem Quellbefehl in * nix-Umgebungen IMHO.
Wenn Sie das nächste Mal Entwickler sind, die Powershell in Windows gegen Git Repo verwenden und nur nicht verfolgte Dateien einschließen möchten, können Sie Folgendes ausführen:
AddUntracked-Git
Dies folgt der Powershell-Konvention, bei der Sie Verb-Nomen haben.
quelle
git hinzufügen. (Alle Dateien in diesem Verzeichnis hinzufügen)
git add -all (füge alle Dateien in allen Verzeichnissen hinzu)
git add -N kann hilfreich sein, um die für später aufzulisten ....
quelle
git add -u
wird geänderte Dateien hinzufügen, die nicht nicht verfolgt werdenUm alle nicht verfolgten Dateien hinzuzufügen, lautet der Befehl git
Wenn Sie weitere Informationen zu verschiedenen verfügbaren Optionen erhalten möchten, können Sie den Befehl eingeben
Anstelle des ersten Befehls erhalten Sie hiermit weitere Optionen, einschließlich der Option zum Hinzufügen aller nicht verfolgten Dateien, wie unten gezeigt:
quelle