English ▾ Themen ▾ Neueste Version ▾ git-restore zuletzt aktualisiert in 2.51.0

NAME

git-restore - Arbeitsbaumdateien wiederherstellen

SYNOPSIS

git restore [<options>] [--source=<tree>] [--staged] [--worktree] [--] <pathspec>…​
git restore [<options>] [--source=<tree>] [--staged] [--worktree] --pathspec-from-file=<file> [--pathspec-file-nul]
git restore (-p|--patch) [<options>] [--source=<tree>] [--staged] [--worktree] [--] [<pathspec>…​]

BESCHREIBUNG

Stellen Sie angegebene Pfade im Arbeitsbaum mit Inhalten aus einer Wiederherstellungsquelle wieder her. Wenn ein Pfad verfolgt wird, aber in der Wiederherstellungsquelle nicht existiert, wird er entfernt, um mit der Quelle übereinzustimmen.

Der Befehl kann auch verwendet werden, um den Inhalt im Index mit --staged wiederherzustellen, oder um sowohl den Arbeitsbaum als auch den Index mit --staged --worktree wiederherzustellen.

Standardmäßig werden bei Angabe von --staged die Inhalte aus HEAD wiederhergestellt, andernfalls aus dem Index. Verwenden Sie --source, um aus einem anderen Commit wiederherzustellen.

Siehe "Zurücksetzen, Wiederherstellen und Rückgängigmachen" in git[1] für die Unterschiede zwischen den drei Befehlen.

OPTIONEN

-s <tree>
--source=<tree>

Stellen Sie die Arbeitsbaumdateien mit dem Inhalt des angegebenen Baums wieder her. Es ist üblich, den Quellbaum durch die Benennung eines damit verbundenen Commits, Branches oder Tags anzugeben.

Wenn nicht angegeben, werden die Inhalte aus HEAD wiederhergestellt, wenn --staged angegeben ist, andernfalls aus dem Index.

Als Sonderfall können Sie "<rev-A>...<rev-B>" als Abkürzung für die Merge-Basis von <rev-A> und <rev-B> verwenden, wenn es genau eine Merge-Basis gibt. Sie können höchstens eine der Optionen <rev-A> und <rev-B> weglassen, in diesem Fall wird standardmäßig HEAD verwendet.

-p
--patch

Interaktiv Hunks in der Differenz zwischen Quell- und Wiederherstellungsort auswählen. Lesen Sie den Abschnitt "Interaktiver Modus" in git-add[1], um den --patch Modus zu bedienen.

-U<n>
--unified=<n>

Generiert Diffs mit <n> Zeilen Kontext. Standard ist diff.context oder 3, wenn die Konfigurationsoption nicht gesetzt ist.

--inter-hunk-context=<n>

Zeigt den Kontext zwischen Diff-Hunks bis zur angegebenen Anzahl von <n> Zeilen an und fasst so nahe beieinander liegende Hunks zusammen. Standard ist diff.interHunkContext oder 0, wenn die Konfigurationsoption nicht gesetzt ist.

-W
--worktree
-S
--staged

Geben Sie den Wiederherstellungsort an. Wenn keine Option angegeben ist, wird standardmäßig der Arbeitsbaum wiederhergestellt. Die Angabe von --staged stellt nur den Index wieder her. Die Angabe beider stellt beides wieder her.

-q
--quiet

Leise, unterdrückt Rückmeldungen. Beinhaltet --no-progress.

--progress
--no-progress

Der Fortschritt wird standardmäßig im Standardfehlerstrom gemeldet, wenn er an ein Terminal angeschlossen ist, es sei denn, --quiet ist angegeben. Diese Flagge aktiviert die Fortschrittsanzeige auch dann, wenn sie nicht an ein Terminal angeschlossen ist, unabhängig von --quiet.

--ours
--theirs

Beim Wiederherstellen von Dateien im Arbeitsbaum aus dem Index werden für unzusammengeführte Pfade Stufe #2 (ours) oder #3 (theirs) verwendet. Diese Option kann nicht verwendet werden, wenn Pfade aus einem Tree-ish ausgecheckt werden (d.h. mit der Option --source).

Beachten Sie, dass während git rebase und git pull --rebase ours und theirs vertauscht erscheinen können. Siehe die Erklärung derselben Optionen in git-checkout[1] für Details.

-m
--merge

Beim Wiederherstellen von Dateien im Arbeitsbaum aus dem Index wird der widersprüchliche Merge in den unzusammengeführten Pfaden neu erstellt. Diese Option kann nicht verwendet werden, wenn Pfade aus einem Tree-ish ausgecheckt werden (d.h. mit der Option --source).

--conflict=<style>

Das Gleiche wie die Option --merge oben, aber ändert die Art und Weise, wie widersprüchliche Hunks dargestellt werden, und überschreibt die Konfigurationsvariable merge.conflictStyle. Mögliche Werte sind merge (Standard), diff3 und zdiff3.

--ignore-unmerged

Beim Wiederherstellen von Dateien im Arbeitsbaum aus dem Index wird die Operation nicht abgebrochen, wenn es unzusammengeführte Einträge gibt und weder --ours, --theirs, --merge noch --conflict angegeben ist. Unzusammengeführte Pfade im Arbeitsbaum bleiben unverändert.

--ignore-skip-worktree-bits

Im Sparse-Checkout-Modus werden standardmäßig nur Einträge aktualisiert, die von <pathspec> und Sparse-Mustern in $GIT_DIR/info/sparse-checkout übereinstimmen. Diese Option ignoriert die Sparse-Muster und stellt alle Dateien in <pathspec> bedingungslos wieder her.

--recurse-submodules
--no-recurse-submodules

Wenn <pathspec> ein aktives Submodul bezeichnet und der Wiederherstellungsort den Arbeitsbaum einschließt, wird das Submodul nur aktualisiert, wenn diese Option gegeben ist, in diesem Fall wird sein Arbeitsbaum auf den im Superprojekt aufgezeichneten Commit zurückgesetzt und alle lokalen Änderungen überschrieben. Wenn nichts (oder --no-recurse-submodules) verwendet wird, werden die Arbeitsbäume der Submodule nicht aktualisiert. Genau wie bei git-checkout[1] wird dabei HEAD des Submoduls gelöst.

--overlay
--no-overlay

Im Overlay-Modus werden beim Wiederherstellen niemals Dateien entfernt. Im No-Overlay-Modus werden verfolgte Dateien entfernt, die nicht im <tree> von --source=<tree> erscheinen, um sie exakt an <tree> anzupassen. Standard ist der No-Overlay-Modus.

--pathspec-from-file=<file>

Pathspec wird in <file> anstelle von Kommandozeilenargumenten übergeben. Wenn <file> genau - ist, wird die Standardeingabe verwendet. Pathspec-Elemente werden durch LF oder CR/LF getrennt. Pathspec-Elemente können wie für die Konfigurationsvariable core.quotePath erklärt (siehe git-config[1]) in Anführungszeichen gesetzt werden. Siehe auch --pathspec-file-nul und global --literal-pathspecs.

--pathspec-file-nul

Nur relevant mit --pathspec-from-file. Pfadangaben werden durch ein NUL-Zeichen getrennt und alle anderen Zeichen werden wörtlich genommen (einschließlich Zeilenumbrüchen und Anführungszeichen).

--

Interpretiere keine weiteren Argumente mehr als Optionen.

<pathspec>...

Begrenzt die von der Operation betroffenen Pfade.

Weitere Details finden Sie im Eintrag pfadspec in gitglossary[7].

BEISPIELE

Die folgende Sequenz wechselt zum master-Branch, setzt die Makefile zwei Revisionen zurück, löscht versehentlich hello.c und holt sie aus dem Index zurück.

$ git switch master
$ git restore --source master~2 Makefile  (1)
$ rm -f hello.c
$ git restore hello.c                     (2)
  1. Eine Datei aus einem anderen Commit nehmen

  2. Stellen Sie hello.c aus dem Index wieder her

Wenn Sie *alle* C-Quellcodedateien so wiederherstellen möchten, dass sie mit der Version im Index übereinstimmen, können Sie sagen:

$ git restore '*.c'

Beachten Sie die Anführungszeichen um *.c. Die Datei hello.c wird ebenfalls wiederhergestellt, obwohl sie nicht mehr im Arbeitsbaum vorhanden ist, da die Dateiglobbing verwendet wird, um Einträge im Index (nicht im Arbeitsbaum durch die Shell) abzugleichen.

Um alle Dateien im aktuellen Verzeichnis wiederherzustellen

$ git restore .

oder um alle Arbeitsbaumdateien mit *top*-Pfadspezifikationsmagie wiederherzustellen (siehe gitglossary[7])

$ git restore :/

Um eine Datei im Index wiederherzustellen, damit sie mit der Version in HEAD übereinstimmt (dies ist dasselbe wie die Verwendung von git-reset[1])

$ git restore --staged hello.c

oder Sie können sowohl den Index als auch den Arbeitsbaum wiederherstellen (dies ist dasselbe wie die Verwendung von git-checkout[1])

$ git restore --source=HEAD --staged --worktree hello.c

oder die Kurzform, die praktischer, aber weniger lesbar ist

$ git restore -s@ -SW hello.c

GIT

Teil der git[1] Suite