English ▾ Themen ▾ Aktuellste Version ▾ git-checkout-index zuletzt aktualisiert in 2.43.0

NAME

git-checkout-index - Dateien vom Index in den Arbeitsbaum kopieren

SYNOPSIS

git checkout-index [-u] [-q] [-a] [-f] [-n] [--prefix=<string>]
		   [--stage=<number>|all]
		   [--temp]
		   [--ignore-skip-worktree-bits]
		   [-z] [--stdin]
		   [--] [<file>…​]

BESCHREIBUNG

Kopiert alle aufgeführten Dateien aus dem Index in das Arbeitsverzeichnis (bestehende Dateien werden nicht überschrieben).

OPTIONEN

-u
--index

Aktualisiert die Stat-Informationen für die ausgecheckten Einträge in der Indexdatei.

-q
--quiet

Sei ruhig, wenn Dateien existieren oder nicht im Index sind

-f
--force

Erzwingt das Überschreiben bestehender Dateien

-a
--all

checked alle Dateien im Index aus, mit Ausnahme derer, bei denen das skip-worktree-Bit gesetzt ist (siehe --ignore-skip-worktree-bits). Kann nicht zusammen mit expliziten Dateinamen verwendet werden.

-n
--no-create

Checked keine neuen Dateien aus, aktualisiert nur bereits ausgecheckte Dateien.

--prefix=<string>

Beim Erstellen von Dateien, fügt <string> (normalerweise ein Verzeichnis inklusive einem abschließenden /) vor.

--stage=<number>|all

Anstatt nicht zusammengeführte Einträge auszuchecken, werden die Dateien aus der benannten Stufe kopiert. <number> muss zwischen 1 und 3 liegen. Hinweis: --stage=all impliziert automatisch --temp.

--temp

Anstatt die Dateien in das Arbeitsverzeichnis zu kopieren, werden die Inhalte in temporäre Dateien geschrieben. Die temporären Namenszuordnungen werden auf stdout geschrieben.

--ignore-skip-worktree-bits

Checked alle Dateien aus, einschließlich derer, bei denen das skip-worktree-Bit gesetzt ist.

--stdin

Anstatt eine Liste von Pfaden von der Kommandozeile zu nehmen, wird die Liste der Pfade von der Standardeingabe gelesen. Pfade werden standardmäßig durch LF (d.h. ein Pfad pro Zeile) getrennt.

-z

Nur sinnvoll mit --stdin; Pfade werden durch ein NUL-Zeichen anstelle von LF getrennt.

--

Interpretiere keine weiteren Argumente mehr als Optionen.

Die Reihenfolge der Flags spielte früher eine Rolle, aber nicht mehr.

Nur git checkout-index auszuführen, tut nichts. Wahrscheinlich meintest du git checkout-index -a. Und wenn du es erzwingen willst, dann willst du git checkout-index -f -a.

Intuitivität ist hier nicht das Ziel. Wiederholbarkeit ist es. Der Grund für das Verhalten "keine Argumente bedeuten keine Arbeit" ist, dass man aus Skripten Folgendes tun können sollte:

$ find . -name '*.h' -print0 | xargs -0 git checkout-index -f --

was alle vorhandenen *.h-Dateien erzwingt, durch ihre zwischengespeicherten Kopien zu ersetzen. Wenn eine leere Kommandozeile "alle" impliziert hätte, dann hätte dies alles im Index mit Gewalt aktualisiert, was nicht beabsichtigt war. Aber da git checkout-index --stdin akzeptiert, wäre es schneller, Folgendes zu verwenden:

$ find . -name '*.h' -print0 | git checkout-index -f -z --stdin

Das -- ist einfach eine gute Idee, wenn man weiß, dass der Rest Dateinamen sein werden; es verhindert Probleme mit einem Dateinamen wie z.B. -a. Die Verwendung von -- ist wahrscheinlich eine gute Vorgehensweise in Skripten.

Verwendung von --temp oder --stage=all

Wenn --temp verwendet wird (oder von --stage=all impliziert wird), erstellt git checkout-index für jeden ausgecheckten Index-Eintrag eine temporäre Datei. Der Index wird nicht mit Stat-Informationen aktualisiert. Diese Optionen können nützlich sein, wenn der Aufrufer alle Stufen aller nicht zusammengeführten Einträge benötigt, damit die nicht zusammengeführten Dateien von einem externen Merge-Tool verarbeitet werden können.

Eine Liste, die die Zuordnung von temporären Dateinamen zu verfolgten Pfadnamen angibt, wird auf stdout geschrieben. Das Listenformat hat zwei Variationen

  1. tempname TAB pfad RS

    Das erste Format wird verwendet, wenn --stage weggelassen wird oder nicht --stage=all ist. Das Feld tempname ist der temporäre Dateiname, der den Dateiinhalt enthält, und pfad ist der verfolgte Pfadname im Index. Nur die angeforderten Einträge werden ausgegeben.

  2. stage1temp Leerzeichen stage2temp Leerzeichen stage3tmp TAB pfad RS

    Das zweite Format wird verwendet, wenn --stage=all. Die drei Stufen-Temporärfelder (stage1temp, stage2temp, stage3temp) listen den Namen der temporären Datei auf, wenn ein Stufeneintrag im Index vorhanden ist, oder ., wenn kein Stufeneintrag vorhanden ist. Pfade, die nur einen Stufe 0 Eintrag haben, werden immer aus der Ausgabe weggelassen.

In beiden Formaten ist RS (der Record Separator) standardmäßig ein Zeilenumbruch (newline), wird aber zu einem Null-Byte, wenn -z auf der Kommandozeile übergeben wurde. Die temporären Dateinamen sind immer sichere Zeichenketten; sie enthalten niemals Verzeichnistrenner oder Leerzeichen. Das Pfadfeld ist immer relativ zum aktuellen Verzeichnis und die temporären Dateinamen sind immer relativ zum obersten Verzeichnis.

Wenn das Objekt, das in eine temporäre Datei kopiert wird, ein symbolischer Link ist, wird der Inhalt des Links in eine normale Datei geschrieben. Es obliegt dem Endbenutzer oder der Porcelain, diese Information zu nutzen.

BEISPIELE

Zum Aktualisieren und Auffrischen nur der bereits ausgecheckten Dateien
$ git checkout-index -n -f -a && git update-index --ignore-missing --refresh
Verwendung von git checkout-index zum "Exportieren eines gesamten Baumes"

Die Prefix-Fähigkeit macht es im Grunde trivial, git checkout-index als "Export als Baum" Funktion zu verwenden. Lesen Sie einfach den gewünschten Baum in den Index und führen Sie aus:

$ git checkout-index --prefix=git-export-dir/ -a

git checkout-index wird den Index in das angegebene Verzeichnis "exportieren".

Das abschließende "/" ist wichtig. Der exportierte Name wird buchstäblich einfach mit dem angegebenen String vorangestellt. Vergleichen Sie dies mit dem folgenden Beispiel.

Dateien mit einem Präfix exportieren
$ git checkout-index --prefix=.merged- Makefile

Dies checked die aktuell zwischengespeicherte Kopie von Makefile in die Datei .merged-Makefile aus.

GIT

Teil der git[1] Suite