Wie kann ich git dazu bringen, txt-Dateien nur im aktuellen Verzeichnis auszuwählen?


7

Wie wähle ich alle Dateien aus, die mit .txtim aktuellen Verzeichnis enden, lasse jedoch alle Dateien in den Unterverzeichnissen weg?

*.txtWählt auch alle Dateien aus, die .txtin den Unterverzeichnissen enden . Wie lasse ich sie weg?

Verzeichnisaufbau:

current folder
|-first_file.txt
|-sub_folder
  |-second_file

Ich versuche, die erste Datei alleine zu einem Git-Repository hinzuzufügen. Durch git add *.txtHinzufügen wird jedoch sowohl die erste als auch die zweite Datei zur Bühne hinzugefügt. Ich möchte, dass nur die erste Datei hinzugefügt wird.


Wie genau verwenden Sie das Muster (bitte fügen Sie den gesamten Befehl / relevanten Teil des Skripts hinzu)? Welche Shell benutzt du?
Nohillside

Der Inhalt wurde aktualisiert.
hallo_rocker_dot_com

2
Bitte fügen Sie Ihrer Frage den genauen git-Befehl hinzu, den Sie ausführen.
Cas

Antworten:


7

Es gibt einen subtilen Unterschied, ob die Shell oder der Git das Muster handhaben. gitBerücksichtigt auch Unterverzeichnisse, die Shell nicht. Also in deinem Fall rennen

git add *.txt

Während das aktuelle Verzeichnis Ihr "aktueller Ordner" ist, kann die Shell die Platzhaltererweiterung durchführen (und fügt daher nur übereinstimmende Dateien im aktuellen Verzeichnis hinzu).


Ausarbeiten

  • Bei git add *.txtPlatzhaltern erfolgt die Erweiterung durch die Shell, wird also gittatsächlich mit aufgerufen git add file1.txt file2.txt(was bedeutet, dass gitnur die übergebenen Dateinamen genommen und hinzugefügt werden). Nur hier Nachteil ist , dass wenn es keine Dateien Anpassung *.txt gitwird so läuft git add *.txtdoch was natürlich auslösen gits Unterverzeichnis Scan
  • Mit git add '*.txt'Wildcard wird eine Erweiterung durchgeführt, gitdie immer auch einen Unterverzeichnis-Scan impliziert.

Ups, okay. Wie lasse ich das Unterverzeichnis weg?
hallo_rocker_dot_com

zitierst du *.txtoder entkommst du dem *? Wenn ja, nicht.
Cas

Übrigens ist dies so ziemlich das Beispiel in git add --help(Suche nach BEISPIELEN). Unter anderem sagt t Ihnen " .... Da in diesem Beispiel die Shell das Sternchen erweitern kann (dh Sie listen die Dateien explizit auf), wird subdir / git-foo.sh nicht berücksichtigt ". Beachten Sie jedoch, dass gemäß dem Standard-Shell-Verhalten, wenn *.txtkeine Dateien im aktuellen Verzeichnis übereinstimmen, diese gitals Literalzeichenfolge übergeben werden.
Cas

@hello_rocker_dot_com Wenn Sie den Befehl wie in der Antwort gezeigt ausführen, werden Unterverzeichnisse nicht berücksichtigt, da die Erweiterung von der Shell durchgeführt wird (die nur im aktuellen Verzeichnis angezeigt wird ). Ich habe die Antwort etwas erweitert.
Nohillside

Ich muss einen Ruf von 15 haben: DI wird es tun, sobald ich das erreicht habe :)
hello_rocker_dot_com
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.