English ▾ Themen ▾ Neueste Version ▾ git-grep zuletzt aktualisiert in 2.45.0

NAME

git-grep - Zeilen nach einem Muster suchen

SYNOPSIS

git grep [-a | --text] [-I] [--textconv] [-i | --ignore-case] [-w | --word-regexp]
	   [-v | --invert-match] [-h|-H] [--full-name]
	   [-E | --extended-regexp] [-G | --basic-regexp]
	   [-P | --perl-regexp]
	   [-F | --fixed-strings] [-n | --line-number] [--column]
	   [-l | --files-with-matches] [-L | --files-without-match]
	   [(-O | --open-files-in-pager) [<pager>]]
	   [-z | --null]
	   [ -o | --only-matching ] [-c | --count] [--all-match] [-q | --quiet]
	   [--max-depth <depth>] [--[no-]recursive]
	   [--color[=<when>] | --no-color]
	   [--break] [--heading] [-p | --show-function]
	   [-A <post-context>] [-B <pre-context>] [-C <context>]
	   [-W | --function-context]
	   [(-m | --max-count) <num>]
	   [--threads <num>]
	   [-f <file>] [-e] <pattern>
	   [--and|--or|--not|(|)|-e <pattern>…​]
	   [--recurse-submodules] [--parent-basename <basename>]
	   [ [--[no-]exclude-standard] [--cached | --untracked | --no-index] | <tree>…​]
	   [--] [<pathspec>…​]

BESCHREIBUNG

Suche nach angegebenen Mustern in den verfolgten Dateien im Arbeitsverzeichnis, in Blobs, die in der Indexdatei registriert sind, oder in Blobs von gegebenen Baumobjekten. Muster sind Listen von einem oder mehreren Suchausdrücken, die durch Zeilenumbrüche getrennt sind. Eine leere Zeichenkette als Suchausdruck passt zu allen Zeilen.

OPTIONEN

--cached

Anstatt verfolgte Dateien im Arbeitsverzeichnis zu durchsuchen, durchsuche Blobs, die in der Indexdatei registriert sind.

--untracked

Zusätzlich zur Suche in den verfolgten Dateien im Arbeitsverzeichnis, suche auch in nicht verfolgten Dateien.

--no-index

Durchsuche Dateien im aktuellen Verzeichnis, die nicht von Git verwaltet werden, oder ignoriere, dass das aktuelle Verzeichnis von Git verwaltet wird. Dies ist ziemlich ähnlich dem Ausführen des regulären grep(1) Dienstprogramms mit seiner Option -r, jedoch mit einigen zusätzlichen Vorteilen, wie der Verwendung von Pfadspezifikationsmustern zur Einschränkung von Pfaden; siehe den Eintrag pathspec in gitglossary[7] für weitere Informationen.

Diese Option kann nicht zusammen mit --cached oder --untracked verwendet werden. Siehe auch grep.fallbackToNoIndex in KONFIGURATION unten.

--no-exclude-standard

Suche auch in ignorierten Dateien, indem der Mechanismus von .gitignore nicht berücksichtigt wird. Nur nützlich mit --untracked.

--exclude-standard

Beachte keine durch den .gitignore Mechanismus spezifizierten ignorierten Dateien. Nur nützlich, wenn Dateien im aktuellen Verzeichnis mit --no-index durchsucht werden.

--recurse-submodules

Rekursiv suche in jedem Submodul, das im Repository aktiv und ausgecheckt ist. Wenn es in Kombination mit der <tree> Option verwendet wird, ist das Präfix aller Submodulausgaben der Name des <tree> Objekts des Elternprojekts. Diese Option kann nicht zusammen mit --untracked verwendet werden und hat keine Auswirkung, wenn --no-index angegeben wird.

-a
--text

Binärdateien so verarbeiten, als wären sie Textdateien.

--textconv

Textkonvertierungsfiltereinstellungen berücksichtigen.

--no-textconv

Textkonvertierungsfiltereinstellungen nicht berücksichtigen. Dies ist die Standardeinstellung.

-i
--ignore-case

Ignoriere Groß-/Kleinschreibungsunterschiede zwischen den Mustern und den Dateien.

-I

Das Muster nicht in Binärdateien suchen.

--max-depth <tiefe>

Für jeden auf der Kommandozeile angegebenen <pathspec> bis zu <tiefe> Verzeichnisebenen absteigen. Ein Wert von -1 bedeutet keine Begrenzung. Diese Option wird ignoriert, wenn <pathspec> aktive Wildcards enthält. Mit anderen Worten, wenn "a*" ein Verzeichnis namens "a*" abgleicht, wird "*" wörtlich abgeglichen, sodass --max-depth weiterhin wirksam ist.

-r
--recursive

Entspricht --max-depth=-1; dies ist die Standardeinstellung.

--no-recursive

Entspricht --max-depth=0.

-w
--word-regexp

Das Muster nur an Wortgrenzen abgleichen (entweder am Anfang einer Zeile beginnen oder einem Nicht-Wort-Zeichen folgen; am Ende einer Zeile enden oder einem Nicht-Wort-Zeichen folgen).

-v
--invert-match

Nicht übereinstimmende Zeilen auswählen.

-h
-H

Standardmäßig zeigt der Befehl für jede Übereinstimmung den Dateinamen an. Die Option -h wird verwendet, um diese Ausgabe zu unterdrücken. -H dient zur Vollständigkeit und bewirkt nichts außer der Überschreibung von zuvor auf der Kommandozeile angegebenem -h.

--full-name

Beim Ausführen aus einem Unterverzeichnis gibt der Befehl normalerweise Pfade relativ zum aktuellen Verzeichnis aus. Diese Option erzwingt, dass Pfade relativ zum obersten Verzeichnis des Projekts ausgegeben werden.

-E
--extended-regexp
-G
--basic-regexp

Verwende POSIX erweiterte/grundlegende RegEx für Muster. Standard ist die Verwendung von grundlegenden RegEx.

-P
--perl-regexp

Verwende Perl-kompatible reguläre Ausdrücke für Muster.

Die Unterstützung für diese Arten von regulären Ausdrücken ist eine optionale Abhängigkeit zur Kompilierzeit. Wenn Git nicht mit Unterstützung dafür kompiliert wurde, führt die Bereitstellung dieser Option zum Abbruch.

-F
--fixed-strings

Verwende feste Zeichenketten für Muster (interpretiere Muster nicht als Regex).

-n
--line-number

Nummeriere die übereinstimmenden Zeilen mit der Zeilennummer vor.

--column

Gib den 1-basierten Byte-Offset des ersten Treffers ab dem Anfang der übereinstimmenden Zeile voran.

-l
--files-with-matches
--name-only
-L
--files-without-match

Anstatt jede übereinstimmende Zeile anzuzeigen, zeige nur die Namen der Dateien an, die Übereinstimmungen enthalten (oder nicht enthalten). Für bessere Kompatibilität mit git diff ist --name-only ein Synonym für --files-with-matches.

-O[<pager>]
--open-files-in-pager[=<pager>]

Öffne die übereinstimmenden Dateien im Pager (nicht die Ausgabe von grep). Wenn der Pager zufällig "less" oder "vi" ist und der Benutzer nur ein Muster angegeben hat, wird die erste Datei automatisch auf die erste Übereinstimmung positioniert. Das Argument pager ist optional; wenn es angegeben wird, muss es ohne Leerzeichen an die Option angehängt werden. Wenn pager nicht angegeben ist, wird der Standard-Pager verwendet (siehe core.pager in git-config[1]).

-z
--null

Verwende \0 als Trennzeichen für Pfadnamen in der Ausgabe und gib sie verbatim aus. Ohne diese Option werden Pfadnamen mit "ungewöhnlichen" Zeichen wie für die Konfigurationsvariable core.quotePath erklärt (siehe git-config[1]) zitiert.

-o
--only-matching

Gib nur die übereinstimmenden (nicht-leeren) Teile einer übereinstimmenden Zeile aus, wobei jeder solche Teil auf einer separaten Ausgabezelle steht.

-c
--count

Anstatt jede übereinstimmende Zeile anzuzeigen, zeige die Anzahl der übereinstimmenden Zeilen an.

--color[=<when>]

Zeige farbige Übereinstimmungen. Der Wert muss immer (Standard), nie oder auto sein.

--no-color

Schalte die Hervorhebung von Übereinstimmungen aus, auch wenn die Konfigurationsdatei die Standardeinstellung für farbige Ausgabe angibt. Entspricht --color=never.

--break

Gib eine Leerzeile zwischen Übereinstimmungen aus verschiedenen Dateien aus.

--heading

Zeige den Dateinamen über den Übereinstimmungen in dieser Datei an, anstatt am Anfang jeder angezeigten Zeile.

-p
--show-function

Zeige die vorherige Zeile an, die den Funktionsnamen des Treffers enthält, es sei denn, die übereinstimmende Zeile ist selbst ein Funktionsname. Der Name wird auf die gleiche Weise ermittelt, wie git diff Patch-Hunk-Header ermittelt (siehe Definieren eines benutzerdefinierten Hunk-Headers in gitattributes[5]).

-<num>
-C <num>
--context <num>

Zeige <num> führende und nachfolgende Zeilen an und platziere eine Zeile mit -- zwischen aufeinanderfolgenden Übereinstimmungsgruppen.

-A <num>
--after-context <num>

Zeige <num> nachfolgende Zeilen an und platziere eine Zeile mit -- zwischen aufeinanderfolgenden Übereinstimmungsgruppen.

-B <num>
--before-context <num>

Zeige <num> führende Zeilen an und platziere eine Zeile mit -- zwischen aufeinanderfolgenden Übereinstimmungsgruppen.

-W
--function-context

Zeige den umgebenden Text von der vorherigen Zeile, die einen Funktionsnamen enthält, bis zur Zeile vor dem nächsten Funktionsnamen an, effektiv die gesamte Funktion, in der der Treffer gefunden wurde, anzeigen. Die Funktionsnamen werden auf die gleiche Weise ermittelt, wie git diff Patch-Hunk-Header ermittelt (siehe Definieren eines benutzerdefinierten Hunk-Headers in gitattributes[5]).

-m <num>
--max-count <num>

Begrenze die Anzahl der Übereinstimmungen pro Datei. Bei Verwendung der Option -v oder --invert-match stoppt die Suche nach der angegebenen Anzahl von Nicht-Übereinstimmungen. Ein Wert von -1 gibt unbegrenzte Ergebnisse zurück (Standard). Ein Wert von 0 wird sofort mit einem Nicht-Null-Status beendet.

--threads <num>

Anzahl der verwendeten grep Worker-Threads. Siehe HINWEISE ZU THREADS und grep.threads in KONFIGURATION für weitere Informationen.

-f <datei>

Muster aus <datei> lesen, eines pro Zeile.

Das Übergeben des Musters über <datei> ermöglicht die Angabe eines Suchmusters, das ein \0 enthält.

Nicht alle Mustertypen unterstützen Muster, die \0 enthalten. Git gibt eine Fehlermeldung aus, wenn ein gegebener Mustertyp ein solches Muster nicht unterstützt. Der --perl-regexp Mustertyp, wenn er gegen das PCRE v2 Backend kompiliert ist, hat die größte Unterstützung für diese Arten von Mustern.

In Git-Versionen vor 2.23.0 wurden Muster, die \0 enthielten, stillschweigend als feste Zeichenketten betrachtet. Dies wurde nie dokumentiert, es gab auch seltsame und undokumentierte Interaktionen zwischen z. B. Nicht-ASCII-Mustern, die \0 enthielten, und --ignore-case.

In zukünftigen Versionen könnten wir Muster, die \0 enthalten, für weitere Such-Backends unterstützen, bis dahin werden wir abstürzen, wenn der betreffende Mustertyp sie nicht unterstützt.

-e

Der nächste Parameter ist das Muster. Diese Option muss für Muster verwendet werden, die mit - beginnen, und sollte in Skripten verwendet werden, die Benutzereingaben an grep übergeben. Mehrere Muster werden mit oder kombiniert.

--and
--or
--not
( …​ )

Geben Sie an, wie mehrere Muster mithilfe von Booleschen Ausdrücken kombiniert werden. --or ist der Standardoperator. --and hat eine höhere Priorität als --or. -e muss für alle Muster verwendet werden.

--all-match

Wenn mehrere Muster-Ausdrücke mit --or kombiniert werden, wird diese Flagge gesetzt, um die Übereinstimmung auf Dateien zu beschränken, die Zeilen haben, die alle davon abgleichen.

-q
--quiet

Gib keine übereinstimmenden Zeilen aus; beende stattdessen mit dem Status 0, wenn eine Übereinstimmung vorhanden ist, und mit dem Nicht-Null-Status, wenn keine vorhanden ist.

<tree>…​

Anstatt verfolgte Dateien im Arbeitsverzeichnis zu durchsuchen, durchsuche Blobs in den gegebenen Bäumen.

--

Signalisiert das Ende der Optionen; der Rest der Parameter sind <pathspec> Begrenzer.

<pathspec>…​

Wenn angegeben, beschränke die Suche auf Pfade, die mindestens einem Muster entsprechen. Sowohl führende Pfadmuster als auch Glob(7)-Muster werden unterstützt.

Weitere Details zur Syntax von <pathspec> finden Sie im Eintrag pathspec in gitglossary[7].

BEISPIELE

git grep time_t' -- *.[ch]

Sucht nach time_t in allen verfolgten .c- und .h-Dateien im Arbeitsverzeichnis und seinen Unterverzeichnissen.

git grep -e '#define' --and \( -e MAX_PATH -e PATH_MAX \)

Sucht nach einer Zeile, die #define und entweder MAX_PATH oder PATH_MAX enthält.

git grep --all-match -e NODE -e Unexpected

Sucht nach einer Zeile, die NODE oder Unexpected in Dateien enthält, die Zeilen haben, die beide übereinstimmen.

git grep solution -- :^Documentation

Sucht nach solution, wobei Dateien im Verzeichnis Documentation ausgeschlossen werden.

HINWEISE ZU THREADS

Die Option --threads (und die Konfiguration grep.threads) wird ignoriert, wenn --open-files-in-pager verwendet wird, was die single-threaded Ausführung erzwingt.

Beim Durchsuchen des Objektspeichers (mit --cached oder Angabe von Baumobjekten) kann die Ausführung mit mehreren Threads langsamer sein als mit einem einzelnen Thread, wenn --textconv angegeben ist und es zu viele Textkonvertierungen gibt. Wenn in diesem Fall eine geringe Leistung festgestellt wird, kann es ratsam sein, --threads=1 zu verwenden.

KONFIGURATION

Alles unterhalb dieser Zeile in diesem Abschnitt wird selektiv aus der git-config[1]-Dokumentation übernommen. Der Inhalt ist derselbe wie dort zu finden.

grep.lineNumber

Wenn auf true gesetzt, aktiviere die Option -n standardmäßig.

grep.column

Wenn auf true gesetzt, aktiviere die Option --column standardmäßig.

grep.patternType

Setze das Standard-Abgleichverhalten. Die Verwendung eines Wertes von basic, extended, fixed oder perl aktiviert entsprechend die Option --basic-regexp, --extended-regexp, --fixed-strings oder --perl-regexp, während der Wert default die Option grep.extendedRegexp verwendet, um zwischen basic und extended zu wählen.

grep.extendedRegexp

Wenn auf true gesetzt, aktiviere die Option --extended-regexp standardmäßig. Diese Option wird ignoriert, wenn die Option grep.patternType auf einen anderen Wert als default gesetzt ist.

grep.threads

Anzahl der zu verwendenden grep-Worker-Threads. Wenn nicht gesetzt (oder auf 0 gesetzt), verwendet Git so viele Threads wie die Anzahl der verfügbaren logischen Kerne.

grep.fullName

Wenn auf true gesetzt, aktiviere die Option --full-name standardmäßig.

grep.fallbackToNoIndex

Wenn auf true gesetzt, falle auf git grep --no-index zurück, wenn git grep außerhalb eines Git-Repositorys ausgeführt wird. Standard ist false.

GIT

Teil der git[1] Suite