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.44.1 → 2.52.0 keine Änderungen
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.7 keine Änderungen
-
2.43.0
2023-11-20
- 2.24.1 → 2.42.4 keine Änderungen
-
2.24.0
2019-11-04
- 2.18.1 → 2.23.4 keine Änderungen
-
2.18.0
2018-06-21
- 2.10.5 → 2.17.6 keine Änderungen
-
2.9.5
2017-07-30
- 2.2.3 → 2.8.6 keine Änderungen
-
2.1.4
2014-12-17
-
2.0.5
2014-12-17
SYNOPSIS
git replace [-f] <object> <replacement> git replace [-f] --edit <object> git replace [-f] --graft <commit> [<parent>…] git replace [-f] --convert-graft-file git replace -d <object>… git replace [--format=<format>] [-l [<pattern>]]
BESCHREIBUNG
Fügt eine replace-Referenz im Namensraum refs/replace/ hinzu.
Der Name der replace-Referenz ist die SHA-1 des zu ersetzenden Objekts. Der Inhalt der replace-Referenz ist die SHA-1 des Ersatzobjekts.
Das ersetzte Objekt und das Ersatzobjekt müssen vom gleichen Typ sein. Diese Einschränkung kann mit -f umgangen werden.
Sofern nicht -f angegeben wird, darf die replace-Referenz noch nicht existieren.
Es gibt keine weitere Einschränkung für die ersetzten und Ersatzobjekte. Merge-Commits können durch Nicht-Merge-Commits und umgekehrt ersetzt werden.
Ersetzungsreferenzen werden standardmäßig von allen Git-Befehlen verwendet, außer von denen, die eine Erreichbarkeitsdurchsuchung durchführen (prune, pack transfer und fsck).
Es ist möglich, die Verwendung von Ersetzungsreferenzen für jeden Befehl zu deaktivieren, indem die Option --no-replace-objects direkt nach git verwendet wird.
Wenn beispielsweise der Commit foo durch den Commit bar ersetzt wurde
$ git --no-replace-objects cat-file commit foo
zeigt Informationen über den Commit foo, während
$ git cat-file commit foo
zeigt Informationen über den Commit bar.
Die Umgebungsvariable GIT_NO_REPLACE_OBJECTS kann gesetzt werden, um den gleichen Effekt wie die Option --no-replace-objects zu erzielen.
OPTIONEN
- -f
- --force
-
Wenn für dasselbe Objekt bereits eine Ersetzungsreferenz existiert, wird diese überschrieben (anstatt abzubrechen).
- -d
- --delete
-
Löscht vorhandene Ersetzungsreferenzen für die angegebenen Objekte.
- --edit <object>
-
Bearbeitet den Inhalt eines Objekts interaktiv. Der vorhandene Inhalt von <object> wird in eine temporäre Datei formatiert, ein Editor wird auf die Datei gestartet und das Ergebnis wird analysiert, um ein neues Objekt desselben Typs wie <object> zu erstellen. Anschließend wird eine Ersetzungsreferenz erstellt, um <object> durch das neu erstellte Objekt zu ersetzen. Einzelheiten zur Auswahl des Editors finden Sie in git-var[1].
- --raw
-
Beim Bearbeiten werden die rohen Objektinhalte anstelle von formatierten Inhalten bereitgestellt. Derzeit betrifft dies nur Bäume, die in ihrer binären Form angezeigt werden. Dies ist schwieriger zu handhaben, kann aber bei der Reparatur eines Baums helfen, der so stark beschädigt ist, dass er nicht formatiert werden kann. Beachten Sie, dass Sie möglicherweise Ihren Editor konfigurieren müssen, um Binärdaten sauber zu lesen und zu schreiben.
- --graft <commit> [<parent>…]
-
Erstellt einen Graft-Commit. Ein neuer Commit wird mit demselben Inhalt wie <commit> erstellt, außer dass seine Eltern [ <parent>…] anstelle der Eltern von <commit> sind. Anschließend wird eine Ersetzungsreferenz erstellt, um <commit> durch den neu erstellten Commit zu ersetzen. Verwenden Sie
--convert-graft-file, um eine$GIT_DIR/info/grafts-Datei zu konvertieren und stattdessen Ersetzungsreferenzen zu verwenden. - --convert-graft-file
-
Erstellt Graft-Commits für alle Einträge in
$GIT_DIR/info/graftsund löscht diese Datei bei Erfolg. Ziel ist es, Benutzern den Übergang von der nun veralteten Graft-Datei zu erleichtern. - -l <pattern>
- --list <pattern>
-
Listet Ersetzungsreferenzen für Objekte auf, die dem angegebenen Muster entsprechen (oder alle, wenn kein Muster angegeben ist). Das Eingeben von "git replace" ohne Argumente listet ebenfalls alle Ersetzungsreferenzen auf.
- --format=<format>
-
Beim Auflisten wird das angegebene <format> verwendet, das eine der Optionen short, medium und long sein kann. Wenn dies weggelassen wird, ist das Format standardmäßig short.
FORMATE
Die folgenden Formate sind verfügbar
-
short: <ersetzt-sha1>
-
medium: <ersetzt-sha1> → <ersetzungs-sha1>
-
long: <ersetzt-sha1> (<ersetzter-typ>) → <ersetzungs-sha1> (<ersetzungs-typ>)
ERSTELLEN VON ERSATZOBJEKTEN
git-hash-object[1], git-rebase[1] und git-filter-repo können unter anderem verwendet werden, um Ersatzobjekte aus vorhandenen Objekten zu erstellen. Die Option --edit kann auch mit git replace verwendet werden, um durch Bearbeiten eines vorhandenen Objekts ein Ersatzobjekt zu erstellen.
Wenn Sie viele Blobs, Bäume oder Commits ersetzen möchten, die Teil einer Kette von Commits sind, können Sie einfach eine Ersatz-Kette von Commits erstellen und dann nur den Commit an der Spitze der Ziel-Kette von Commits durch den Commit an der Spitze der Ersatz-Kette von Commits ersetzen.
BUGS
Der Vergleich von Blobs oder Bäumen, die ersetzt wurden, mit denen, die sie ersetzen, funktioniert nicht richtig. Und die Verwendung von git reset --hard, um zu einem ersetzten Commit zurückzukehren, verschiebt den Branch zum Ersatz-Commit anstelle des ersetzten Commits.
Es kann andere Probleme bei der Verwendung von git rev-list im Zusammenhang mit ausstehenden Objekten geben.
GIT
Teil der git[1] Suite