Git

NAME

git-restore - Dateien im Arbeitsbereich wiederherstellen

ÜBERSICHT

git restore [<Optionen>] [--source=<Tree>] [--staged] [--worktree] [--] <Pfadspezifikation>…​
git restore [<Optionen>] [--source=<Tree>] [--staged] [--worktree] --pathspec-from-file=<Datei> [--pathspec-file-nul]
git restore (-p|--patch) [<Optionen>] [--source=<Tree>] [--staged] [--worktree] [--] [<Pfadspezifikation>…​]

BESCHREIBUNG

Stellt spezifizierte Pfade im Arbeitsbereich mit Inhalt aus einer Wiederherstellungsquelle wieder her. Wenn ein Pfad überwacht wird, aber in der Wiederherstellungsquelle nicht vorhanden ist, wird er entfernt, damit er mit der Quelle übereinstimmt.

Der Befehl kann auch verwendet werden, um den Inhalt im Index mit --staged wiederherzustellen oder um sowohl den Arbeitsbereich (working tree) als auch den Index mit --staged --worktree wiederherzustellen.

By default, if --staged is given, the contents are restored from HEAD, otherwise from the index. Use --source to restore from a different commit.

Siehe „Reset, restore und revert“ in git[1] für die unterschiedlichen Eigenschaften der drei Befehle.

DIESER BEFEHL IST EXPERIMENTELL. MÖGLICHERWEISE KANN SICH DAS VERHALTEN ÄNDERN.

OPTIONEN

-s <Tree>
--source=<Tree>

Wiederherstellen der Dateien des Arbeitsbereichs mit dem Inhalt aus dem angegebenen Daten-Baum. Es ist üblich, den Quellbaum durch Angabe eines assoziierten Commit-, Branch- oder Tag-Namens zu bestimmen.

If not specified, the contents are restored from HEAD if --staged is given, otherwise from the index.

-p
--patch

Wählt interaktiv abweichende Abschnitte in der Wiederherstellungsquelle und dem Wiederherstellungsort aus. Siehe den Abschnitt "Interaktiver Modus" in git-add[1], um zu erfahren, wie der --patch-Modus anzuwenden ist.

Note that --patch can accept no pathspec and will prompt to restore all modified paths.

-W
--worktree
-S
--staged

Bestimmt den Wiederherstellungsort. Wenn keine der beiden Optionen angegeben wurde, stellt das System standardmäßig den Arbeitsbereich wieder her. Mit der Angabe von --staged wird nur den Index wieder hergestellt. Die Angabe beider Optionen stellt beides wieder her.

-q
--quiet

Quiet, suppress feedback messages. Implies --no-progress.

--progress
--no-progress

Der Fortschritt wird standardmäßig auf der Standardfehlerausgabe angezeigt, wenn diese an ein Terminal angebunden ist, außer wenn --quiet angegeben ist. Dieses Flag erlaubt die Fortschrittsanzeige auch ohne Terminalanbindung, ohne --quiet zu berücksichtigen.

--ours
--theirs

Wenn Dateien im Arbeitsbereich aus dem Index wiederhergestellt werden, verwendet man Stufe #2 (ours) oder #3 (theirs) für nicht gemergte Pfade.

Hinweis: Während eines git rebase und eines git pull --rebase können ours und theirs vertauscht erscheinen. Siehe die Beschreibung der gleichen Optionen in git-checkout[1] für weitere Details.

-m
--merge

Wenn Dateien im Arbeitsbereich aus dem Index wiederhergestellt werden, muss der konfliktbehaftete Merge in den nicht zusammengeführten Pfaden neu erstellt werden.

--conflict=<style>

Die gleiche Option, wie die Option --merge oben, aber sie ändert die Art, wie die widersprüchlichen Teile dargestellt werden. Dabei wird die Konfigurationsvariable -merge.conflictStyle überschrieben. Mögliche Werte sind "merge" ( Vorgabe) und "diff3" (zusätzlich zu dem, was der "merge"-Stil anzeigt, wird der originäre Inhalt ausgegeben).

--ignore-unmerged

Wenn Dateien im Arbeitsbereich aus dem Index wiederhergestellt werden, sollte diese Operation nicht abgebrochen werden, wenn es nicht gemergte Einträge gibt und weder --ours, --theirs, --merge noch --conflict angegeben ist. Nicht verschmolzene Pfade auf dem Arbeitsbereich werden ignoriert.

--ignore-skip-worktree-bits

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

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

If <pathspec> names an active submodule and the restore location includes the working tree, the submodule will only be updated if this option is given, in which case its working tree will be restored to the commit recorded in the superproject, and any local modifications overwritten. If nothing (or --no-recurse-submodules) is used, submodules working trees will not be updated. Just like git-checkout[1], this will detach HEAD of the submodule.

--overlay
--no-overlay

Im Overlay-Modus werden mit diesem Befehl niemals Dateien beim Wiederherstellen entfernt. Im No-Overlay-Modus werden getrackte Dateien, die nicht im --source-Tree vorkommen, entfernt, damit sie genau mit <Tree> übereinstimmen. Die Standardeinstellung ist der No-Overlay-Modus.

--pathspec-from-file=<Datei>

Die Pfadangabe wird in <Datei> statt über Befehlszeilen-Argumente übergeben. Wenn <Datei> genau - ist, wird die Standardeingabe verwendet. Pfadspezifische Elemente werden durch LF oder CR/LF getrennt. Pathspec-Elemente können in Anführungszeichen gesetzt werden, wie für die Konfigurations-Variable core.quotePath beschrieben (siehe git-config[1]). Siehe auch --pathspec-file-nul und global --literal-pathspecs.

--pathspec-file-nul

Nur sinnvoll mit --pathspec-from-file. Pfadspezifische Elemente werden mit dem Steuerzeichen-Code NULL getrennt und alle anderen Zeichen werden unverändert übernommen (einschließlich der Zeilenumbrüche und Anführungszeichen).

--

Diese Option kann dazu verwendet werden, Befehlszeilenoptionen von der Liste von Dateien zu trennen. Dies ist sinnvoll, wenn Dateinamen mit Befehlszeilenoptionen verwechselt werden könnten.

<Pfadspezifikation>…​

Legt die von der Operation betroffenen Pfade fest.

Mehr Details finden Sie im pathspec-Eintrag in gitglossary[7].

BEISPIELE

Das folgende Listing wechselt in den Branch master, setzt das Makefile um zwei Revisionsstände zurück, dann wird hello.c irrtümlich gelöscht, um danach wieder aus dem Index zurückgeholt zu werden.

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

  2. Wiederherstellen von hello.c aus dem Index

Falls alle C-Quelldateien wieder hergestellt werden sollen, damit sie mit der Version im Index übereinstimmen, kann man folgendes eingeben

$ git restore '*.c'

Beachten Sie die Anführungszeichen bei *.c. Die Datei hello.c wird auch wieder hergestellt, obwohl sie sich nicht mehr im Arbeitsbereich befindet, weil das Wildcard-Zeichen (*) verwendet wird, um damit Einträge im Index (nicht im Arbeitsbereich der Shell) zu finden.

So kann man alle Dateien im aktuellen Verzeichnis wieder herstellen

$ git restore .

or to restore all working tree files with top pathspec magic (see gitglossary[7])

$ git restore :/

Eine Datei im Index so wiederherstellen, dass sie mit der Version in HEAD übereinstimmt (das entspricht dem Vorgehen wie mit git-reset[1])

$ git restore --staged hello.c

oder sowohl Index als auch den Arbeitsbereich zurückerhalten (das ist das gleiche wie mit git-checkout[1])

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

die Kurzform ist praktischer aber nicht so gut lesbar:

$ git restore -s@ -SW hello.c

GIT

Teil der git[1] Suite