Einrichtung und Konfiguration
Projekte holen und erstellen
Grundlegende Snapshots
Branching und Merging
Projekte teilen und aktualisieren
Inspektion und Vergleich
Patching
Debugging
Externe Systeme
Server-Administration
Anleitungen
- gitattributes
- Konventionen der Kommandozeile
- Tägliches Git
- Häufig gestellte Fragen (FAQ)
- Glossar
- Hooks
- gitignore
- gitmodules
- Revisionen
- Submodule
- Tutorial
- Workflows
- Alle Anleitungen...
Administration
Plumbing-Befehle
- 2.45.1 → 2.52.0 keine Änderungen
-
2.45.0
2024-04-29
- 2.43.1 → 2.44.4 keine Änderungen
-
2.43.0
2023-11-20
- 2.38.1 → 2.42.4 keine Änderungen
-
2.38.0
2022-10-02
- 2.32.1 → 2.37.7 keine Änderungen
-
2.32.0
2021-06-06
- 2.30.1 → 2.31.8 keine Änderungen
-
2.30.0
2020-12-27
- 2.29.1 → 2.29.3 keine Änderungen
-
2.29.0
2020-10-19
- 2.27.1 → 2.28.1 keine Änderungen
-
2.27.0
2020-06-01
- 2.26.1 → 2.26.3 keine Änderungen
-
2.26.0
2020-03-22
- 2.25.2 → 2.25.5 keine Änderungen
-
2.25.1
2020-02-17
- 2.24.1 → 2.25.0 keine Änderungen
-
2.24.0
2019-11-04
- 2.22.1 → 2.23.4 keine Änderungen
-
2.22.0
2019-06-07
- 2.20.1 → 2.21.4 keine Änderungen
-
2.20.0
2018-12-09
- 2.19.1 → 2.19.6 keine Änderungen
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 keine Änderungen
-
2.18.0
2018-06-21
- 2.16.6 → 2.17.6 keine Änderungen
- 2.15.4 keine Änderungen
-
2.14.6
2019-12-06
- 2.13.7 keine Änderungen
-
2.12.5
2017-09-22
- 2.10.5 → 2.11.4 keine Änderungen
-
2.9.5
2017-07-30
-
2.8.6
2017-07-30
- 2.7.6 keine Änderungen
-
2.6.7
2017-05-05
- 2.2.3 → 2.5.6 keine Änderungen
-
2.1.4
2014-12-17
-
2.0.5
2014-12-17
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
--cachedoder--untrackedverwendet werden. Siehe auchgrep.fallbackToNoIndexin KONFIGURATION unten. - --no-exclude-standard
-
Suche auch in ignorierten Dateien, indem der Mechanismus von
.gitignorenicht berücksichtigt wird. Nur nützlich mit--untracked. - --exclude-standard
-
Beachte keine durch den
.gitignoreMechanismus spezifizierten ignorierten Dateien. Nur nützlich, wenn Dateien im aktuellen Verzeichnis mit--no-indexdurchsucht 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
--untrackedverwendet werden und hat keine Auswirkung, wenn--no-indexangegeben 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
-hwird verwendet, um diese Ausgabe zu unterdrücken.-Hdient 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-onlyein 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
pagerist optional; wenn es angegeben wird, muss es ohne Leerzeichen an die Option angehängt werden. Wennpagernicht angegeben ist, wird der Standard-Pager verwendet (siehecore.pagerin 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.quotePatherklä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
gitdiffPatch-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
gitdiffPatch-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
-voder--invert-matchstoppt 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
grepWorker-Threads. Siehe HINWEISE ZU THREADS undgrep.threadsin 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-regexpMustertyp, 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.
--orist der Standardoperator.--andhat eine höhere Priorität als--or.-emuss für alle Muster verwendet werden. - --all-match
-
Wenn mehrere Muster-Ausdrücke mit
--orkombiniert 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
gitgreptime_t'--*.[ch]-
Sucht nach
time_tin 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
#defineund entwederMAX_PATHoderPATH_MAXenthält. gitgrep--all-match-eNODE-eUnexpected-
Sucht nach einer Zeile, die
NODEoderUnexpectedin Dateien enthält, die Zeilen haben, die beide übereinstimmen. gitgrepsolution--:^Documentation-
Sucht nach
solution, wobei Dateien im VerzeichnisDocumentationausgeschlossen 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
-nstandardmäßig. - grep.column
-
Wenn auf true gesetzt, aktiviere die Option
--columnstandardmäß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-stringsoder--perl-regexp, während der Wert default die Optiongrep.extendedRegexpverwendet, um zwischen basic und extended zu wählen. - grep.extendedRegexp
-
Wenn auf true gesetzt, aktiviere die Option
--extended-regexpstandardmäßig. Diese Option wird ignoriert, wenn die Optiongrep.patternTypeauf 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-namestandardmäßig. - grep.fallbackToNoIndex
-
Wenn auf true gesetzt, falle auf
gitgrep--no-indexzurück, wenngitgrepaußerhalb eines Git-Repositorys ausgeführt wird. Standard ist false.
GIT
Teil der git[1] Suite