Gibt es eine Möglichkeit, mit einem Befehl git ls-files
nur nicht verfolgte Dateien anzuzeigen?
Der Grund, den ich frage, ist, dass ich den folgenden Befehl verwende, um alle gelöschten Dateien zu verarbeiten:
git ls-files -d | xargs git rm
Ich hätte gerne etwas Ähnliches für nicht verfolgte Dateien:
git some-command --some-options | xargs git add
Ich konnte die -o
Option dazu finden git ls-files
, aber das ist nicht das, was ich will, weil es auch ignorierte Dateien anzeigt. Ich konnte mir auch den folgenden langen und hässlichen Befehl einfallen lassen:
git status --porcelain | grep '^??' | cut -c4- | xargs git add
Es scheint, als müsste es einen besseren Befehl geben, den ich hier verwenden kann. Und wenn nicht, wie erstelle ich benutzerdefinierte Git-Befehle?
git
git-status
git-rm
git-stage
git-ls-files
Wir sind alle Monica
quelle
quelle
git ls-files -d | xargs git rm
?git
nur für Dateien funktioniert, können leere Ordner nicht nachverfolgt werden. Versuchen Sie esfind . -type d -empty
stattdessen.Antworten:
Um nicht verfolgte Dateien aufzulisten, versuchen Sie:
Wenn Sie die Ausgabe an weiterleiten müssen,
xargs
sollten Sie Leerzeichen mitgit ls-files -z
und beachtenxargs -0
:Netter Alias zum Hinzufügen von nicht verfolgten Dateien:
Bearbeiten: Als Referenz: git-ls-files
quelle
!
am Anfang der Aliaszeile oder wo ist das dokumentiert?git add *
wird das Gleiche tun: Fügen Sie alle nicht verfolgten Dateien mit Ausnahme des Standards hinzu (Dateien, deren Pfade abgedeckt sind.gitignore
).[alias] lso = "!f() { cd $(git rev-parse --show-toplevel); git ls-files -o; }; f"
Wenn Sie nur nicht verfolgte Dateien entfernen möchten, gehen Sie folgendermaßen vor:
Fügen
x
Sie dies hinzu , wenn Sie auch speziell ignorierte Dateien einschließen möchten. Ich benutzegit clean -dfx
eine Menge im Laufe des Tages.Sie können ein benutzerdefiniertes Git erstellen, indem Sie einfach ein Skript mit dem Namen schreiben
git-whatever
und es in Ihrem Pfad haben.quelle
git add -A
odergit add -u
(je nachdem, was für Sie sinnvoller ist)git add -A -n
wird tun was du willst.-A
Fügt dem Repo alle nicht verfolgten Dateien hinzu und-n
macht es zu einem Ort, andry-run
dem das Hinzufügen nicht durchgeführt wird, aber die Statusausgabe wird angezeigt, indem jede Datei aufgelistet wird, die hinzugefügt worden wäre.quelle
.gitignore
Dateien ausgeschlossen werden. Dies ist normalerweise das, was wir wollen, aber wenn nichtgit add -fAn
.add '$file'
. Währendgit ls-files --exclude-standard -o
gibt eine bloße Ausgabe, Rohrleitung heiß.Die akzeptierte Antwort stürzt bei Dateinamen mit Leerzeichen ab. Ich bin mir zu diesem Zeitpunkt nicht sicher, wie ich den Alias-Befehl aktualisieren soll. Daher werde ich die verbesserte Version hier einfügen:
quelle
Alles ist sehr einfach
Um eine Liste aller nicht verfolgten Dateien zu erhalten, verwenden Sie den Befehl git status mit der Option -u (--untracked-files).
quelle
--ignored
demgit status -u
Befehl hinzufügenBei der Suche nach Dateien, die möglicherweise hinzugefügt werden sollen. Die Ausgabe von
git show
macht das, aber es enthält auch viele andere Dinge. Der folgende Befehl ist nützlich, um dieselbe Liste von Dateien abzurufen, jedoch ohne alle anderen Dinge.Dies ist nützlich, wenn es in einer Pipeline kombiniert wird, um Dateien zu finden, die einem bestimmten Muster entsprechen, und diese dann an weiterzuleiten
git add
.quelle
Ich weiß, dass es eine alte Frage ist, aber in Bezug auf die Auflistung nicht verfolgter Dateien dachte ich, ich würde eine weitere hinzufügen, die auch nicht verfolgte Ordner auflistet:
Sie können die Git-Clean-Operation mit -n (Trockenlauf) verwenden, um anzuzeigen, welche Dateien entfernt werden (einschließlich der Gitignore-Dateien), indem:
git clean -xdn
Dies hat den Vorteil, dass alle Dateien und Ordner angezeigt werden , die nicht verfolgt werden. Parameter:
x
- Zeigt alle nicht verfolgten Dateien an (einschließlich von Git und anderen ignorierter Dateien, wie Build-Ausgabe usw.)d
- Nicht verfolgte Verzeichnisse anzeigenn
- und vor allem! - dryrun, dh nichts löschen, einfach den Bereinigungsmechanismus verwenden, um die Ergebnisse anzuzeigen.Es kann ein bisschen unsicher sein, es so zu machen, wenn Sie das vergessen
-n
. Also alias ich es normalerweise in git config.quelle
Alle vorherigen Antworten, die ich überprüft habe, würden auch die Dateien auflisten, die festgeschrieben werden sollen. Hier ist eine einfache Lösung, die nur Dateien auflistet, die sich noch nicht im Repo befinden und nicht unterliegen
.gitignore
.oder
quelle
Ich denke, das wird so sein wie das Originalplakat:
git add .
quelle
git/svn add .
, wenn Sie dies tun , stirbt das Kätzchen.git add .
ungestraft!.gitignore
richtig. Trotzdem gut zu vermeidengit add .
. Besser istgit add -u
.