English ▾ Themen ▾ Neueste Version ▾ gitglossary zuletzt aktualisiert in 2.51.0

NAME

gitglossary - Ein Git-Glossar

SYNOPSIS

*

BESCHREIBUNG

alternative Objekt-Datenbank

Über den "alternates"-Mechanismus kann ein Repository einen Teil seiner Objekt-Datenbank von einer anderen Objekt-Datenbank erben, die als "Alternative" bezeichnet wird.

Bare-Repository

Ein Bare-Repository ist normalerweise ein passend benanntes Verzeichnis mit der Suffix ".git", das keine lokal ausgecheckte Kopie der Dateien unter Versionskontrolle enthält. Das bedeutet, dass alle Git-Administrations- und Steuerdateien, die normalerweise im versteckten Unterverzeichnis ".git" vorhanden wären, stattdessen direkt im Verzeichnis "repository.git" vorhanden sind und keine anderen Dateien vorhanden oder ausgecheckt sind. Üblicherweise stellen Herausgeber öffentlicher Repositories Bare-Repositories zur Verfügung.

Blob-Objekt

Nicht typisiertes Objekt, z. B. der Inhalt einer Datei.

Branch

Ein "Branch" ist eine Entwicklungslinie. Der letzte Commit in einem Branch wird als Spitze dieses Branches bezeichnet. Die Spitze des Branches wird durch einen Branch-Head referenziert, der sich vorwärts bewegt, wenn zusätzliche Entwicklung auf dem Branch durchgeführt wird. Ein einzelnes Git-Repository kann eine beliebige Anzahl von Branches verfolgen, aber Ihr Arbeitsverzeichnis ist nur mit einem davon ("aktueller" oder "ausgecheckter" Branch) verbunden, und HEAD zeigt auf diesen Branch.

Cache

Veraltet für: Index.

Kette

Eine Liste von Objekten, wobei jedes Objekt in der Liste einen Verweis auf seinen Nachfolger enthält (z. B. könnte der Nachfolger eines Commits eines seiner Eltern sein).

Änderungssatz

BitKeeper/cvsps-Sprache für "Commit". Da Git keine Änderungen, sondern Zustände speichert, ergibt die Verwendung des Begriffs "Änderungssätze" bei Git keinen Sinn.

Auschecken

Die Aktion, alle oder Teile des Arbeitsverzeichnisses mit einem Baumobjekt oder Blob aus der Objekt-Datenbank zu aktualisieren und den Index und HEAD zu aktualisieren, wenn das gesamte Arbeitsverzeichnis auf einen neuen Branch gezeigt hat.

Cherry-Picking

Im SCM-Jargon bedeutet "Cherry Pick", eine Teilmenge von Änderungen aus einer Reihe von Änderungen (typischerweise Commits) auszuwählen und sie als neue Reihe von Änderungen auf einer anderen Codebasis aufzuzeichnen. In Git wird dies durch den Befehl "git cherry-pick" durchgeführt, um die von einem vorhandenen Commit eingeführte Änderung zu extrahieren und sie basierend auf der Spitze des aktuellen Branches als neuen Commit aufzuzeichnen.

sauber

Ein Arbeitsverzeichnis ist "sauber", wenn es mit der vom aktuellen Head referenzierten Revision übereinstimmt. Siehe auch "dirty".

Commit

Als Substantiv: Ein einzelner Punkt in der Git-Historie; die gesamte Historie eines Projekts wird als eine Menge von zusammenhängenden Commits dargestellt. Das Wort "Commit" wird von Git oft an denselben Stellen verwendet, an denen andere Versionskontrollsysteme die Wörter "Revision" oder "Version" verwenden. Wird auch als Kurzform für Commit-Objekt verwendet.

Als Verb: Die Aktion, einen neuen Schnappschuss des Projektzustands in der Git-Historie zu speichern, indem ein neuer Commit erstellt wird, der den aktuellen Zustand des Index darstellt, und HEAD auf den neuen Commit zeigt.

Commit-Graph-Konzept, Darstellungen und Verwendung

Ein Synonym für die DAG-Struktur, die durch die Commits in der Objekt-Datenbank gebildet wird und durch die Spitzen der Branches referenziert wird, wobei die Kette der verknüpften Commits verwendet wird. Diese Struktur ist der definitive Commit-Graph. Der Graph kann auf andere Weise dargestellt werden, z. B. als "Commit-Graph-Datei".

Commit-Graph-Datei

Die "Commit-Graph"-Datei (normalerweise mit Bindestrich) ist eine ergänzende Darstellung des Commit-Graphen, die das Durchlaufen des Commit-Graphen beschleunigt. Die "Commit-Graph"-Datei wird entweder im Verzeichnis .git/objects/info oder im info-Verzeichnis einer alternativen Objekt-Datenbank gespeichert.

Commit-Objekt

Ein Objekt, das die Informationen über eine bestimmte Revision enthält, wie z. B. Eltern, Committer, Autor, Datum und das Baumobjekt, das dem obersten Verzeichnis der gespeicherten Revision entspricht.

Commit-ish (auch committish)

Ein Commit-Objekt oder ein Objekt, das rekursiv zu einem Commit-Objekt dereferenziert werden kann. Die folgenden sind alle Commit-ishes: ein Commit-Objekt, ein Tag-Objekt, das auf ein Commit-Objekt zeigt, ein Tag-Objekt, das auf ein Tag-Objekt zeigt, das auf ein Commit-Objekt zeigt, usw.

Core Git

Grundlegende Datenstrukturen und Dienstprogramme von Git. Bietet nur begrenzte Werkzeuge zur Quellcodeverwaltung.

DAG

Gerichteter azyklischer Graph. Die Commit-Objekte bilden einen gerichteten azyklischen Graphen, da sie Eltern (gerichtet) haben und der Graph der Commit-Objekte azyklisch ist (es gibt keine Kette, die mit demselben Objekt beginnt und endet).

hängendes Objekt

Ein unerreichbares Objekt, das auch von anderen unerreichbaren Objekten nicht erreichbar ist; ein hängendes Objekt hat keine Verweise von Referenzen oder Objekten im Repository.

Dereferenzieren

Bezieht sich auf eine symbolische Referenz: die Aktion, auf die Referenz zuzugreifen, auf die eine symbolische Referenz zeigt. Rekursives Dereferenzieren beinhaltet die wiederholte Ausführung des oben genannten Prozesses auf der resultierenden Referenz, bis eine nicht-symbolische Referenz gefunden wird.

Bezieht sich auf ein Tag-Objekt: die Aktion, auf das Objekt zuzugreifen, auf das ein Tag zeigt. Tags werden rekursiv dereferenziert, indem die Operation auf dem Ergebnisobjekt wiederholt wird, bis das Ergebnis entweder einen bestimmten Objekttyp (wo anwendbar) oder jeden Nicht-"Tag"-Objekttyp hat. Ein Synonym für "rekursives Dereferenzieren" im Kontext von Tags ist "peelen".

Bezieht sich auf ein Commit-Objekt: die Aktion, auf das Commit-Baumobjekt zuzugreifen. Commits können nicht rekursiv dereferenziert werden.

Sofern nicht anders angegeben, ist "Dereferenzieren", wie es im Kontext von Git-Befehlen oder -Protokollen verwendet wird, implizit rekursiv.

Detached HEAD

Normalerweise speichert HEAD den Namen eines Branches, und Befehle, die auf die von HEAD repräsentierte Historie wirken, arbeiten auf der Historie, die zur Spitze des Branches führt, auf den HEAD zeigt. Git erlaubt es Ihnen jedoch auch, einen beliebigen Commit auszuchecken, der nicht unbedingt die Spitze eines bestimmten Branches ist. Der HEAD in einem solchen Zustand wird als "detached" bezeichnet.

Beachten Sie, dass Befehle, die auf die Historie des aktuellen Branches wirken (z. B. git commit, um eine neue Historie darauf aufzubauen), auch funktionieren, wenn der HEAD detached ist. Sie aktualisieren den HEAD, um auf die Spitze der aktualisierten Historie zu zeigen, ohne einen Branch zu beeinflussen. Befehle, die Informationen *über* den aktuellen Branch aktualisieren oder abfragen (z. B. git branch --set-upstream-to, das festlegt, mit welchem Remote-Tracking-Branch der aktuelle Branch integriert wird), funktionieren offensichtlich nicht, da in diesem Zustand kein (echter) aktueller Branch abgefragt werden kann.

Verzeichnis

Die Liste, die Sie mit "ls" erhalten :-)

dirty

Ein Arbeitsverzeichnis wird als "dirty" bezeichnet, wenn es Änderungen enthält, die noch nicht auf den aktuellen Branch committet wurden.

böses Merge

Ein böses Merge ist ein Merge, der Änderungen einführt, die in keinem Elternteil vorkommen.

Fast-Forward

Ein Fast-Forward ist eine spezielle Art von Merge, bei dem Sie eine Revision haben und Änderungen von einem anderen Branch "mergen", die zufällig ein Nachfahre dessen sind, was Sie haben. In einem solchen Fall erstellen Sie keinen neuen Merge-Commit, sondern aktualisieren lediglich Ihren Branch, damit er auf dieselbe Revision wie der Branch zeigt, den Sie mergen. Dies geschieht häufig bei einem Remote-Tracking-Branch eines Remote-Repositorys.

Abrufen

Das Abrufen eines Branches bedeutet, den Head-Referenz des Branches aus einem Remote-Repository abzurufen, herauszufinden, welche Objekte in der lokalen Objekt-Datenbank fehlen, und diese ebenfalls abzurufen. Siehe auch git-fetch[1].

Dateisystem

Linus Torvalds entwarf Git ursprünglich als Dateisystem im User-Space, d. h. als Infrastruktur zum Speichern von Dateien und Verzeichnissen. Dies stellte die Effizienz und Geschwindigkeit von Git sicher.

Git-Archiv

Synonym für Repository (für Archiv-Leute).

Git-Datei

Eine einfache Datei ".git" am Stammverzeichnis eines Arbeitsverzeichnisses, die auf das Verzeichnis verweist, das das eigentliche Repository ist. Für die richtige Verwendung siehe git-worktree[1] oder git-submodule[1]. Für die Syntax siehe gitrepository-layout[5].

Grafts

Grafts ermöglichen es, zwei ansonsten unterschiedliche Entwicklungslinien zu verbinden, indem gefälschte Ahneninformationen für Commits aufgezeichnet werden. Auf diese Weise können Sie Git dazu bringen, so zu tun, als ob die Menge der Eltern eines Commits anders ist als die, die bei der Erstellung des Commits aufgezeichnet wurde. Konfiguriert über die Datei .git/info/grafts.

Beachten Sie, dass der Graft-Mechanismus veraltet ist und zu Problemen beim Übertragen von Objekten zwischen Repositories führen kann; siehe git-replace[1] für ein flexibleres und robusteres System, das dasselbe tut.

Hash

Im Kontext von Git ein Synonym für Objektname.

Head

Eine benannte Referenz auf den Commit an der Spitze eines Branches. Heads werden in einer Datei im Verzeichnis $GIT_DIR/refs/heads/ gespeichert, außer bei Verwendung von Packed Refs. (Siehe git-pack-refs[1].)

HEAD

Der aktuelle Branch. Genauer gesagt: Ihr Arbeitsverzeichnis wird normalerweise aus dem Zustand des Baums abgeleitet, auf den HEAD verweist. HEAD ist eine Referenz auf einen der Heads in Ihrem Repository, außer bei Verwendung eines detached HEAD, in diesem Fall verweist er direkt auf einen beliebigen Commit.

Head-Referenz

Ein Synonym für Head.

Hook

Während der normalen Ausführung mehrerer Git-Befehle werden optionale Skripte aufgerufen, die es einem Entwickler ermöglichen, Funktionalität oder Überprüfungen hinzuzufügen. Typischerweise ermöglichen Hooks, dass ein Befehl vorab überprüft und potenziell abgebrochen werden kann, und ermöglichen eine Benachrichtigung nach Abschluss des Vorgangs. Die Hook-Skripte befinden sich im Verzeichnis $GIT_DIR/hooks/ und werden aktiviert, indem einfach das Suffix ".sample" aus dem Dateinamen entfernt wird. In früheren Versionen von Git mussten Sie diese ausführbar machen.

Index

Eine Sammlung von Dateien mit Stat-Informationen, deren Inhalte als Objekte gespeichert werden. Der Index ist eine gespeicherte Version Ihres Arbeitsverzeichnisses. Tatsächlich kann er auch eine zweite und sogar eine dritte Version eines Arbeitsverzeichnisses enthalten, die beim Mergen verwendet werden.

Index-Eintrag

Die Informationen zu einer bestimmten Datei, die im Index gespeichert sind. Ein Index-Eintrag kann unvermischt sein, wenn ein Merge gestartet, aber noch nicht abgeschlossen wurde (d. h. wenn der Index mehrere Versionen dieser Datei enthält).

Master

Der Standard-Entwicklungs-Branch. Jedes Mal, wenn Sie ein Git-Repository erstellen, wird ein Branch namens "master" erstellt und zum aktiven Branch. In den meisten Fällen enthält dieser die lokale Entwicklung, obwohl das rein konventionell ist und nicht vorgeschrieben.

Merge

Als Verb: Die Inhalte eines anderen Branches (möglicherweise aus einem externen Repository) in den aktuellen Branch zu integrieren. Wenn der gemergte Branch aus einem anderen Repository stammt, geschieht dies durch zuerst das Abrufen (fetching) des Remote-Branches und dann das Mergen des Ergebnisses in den aktuellen Branch. Diese Kombination aus Fetch- und Merge-Vorgängen wird als Pull bezeichnet. Das Mergen wird durch einen automatischen Prozess durchgeführt, der Änderungen identifiziert, die seit der Abzweigung der Branches vorgenommen wurden, und dann alle diese Änderungen zusammen anwendet. In Fällen, in denen Änderungen zu Konflikten führen, kann eine manuelle Intervention erforderlich sein, um den Merge abzuschließen.

Als Substantiv: Wenn es sich nicht um einen Fast-Forward handelt, führt ein erfolgreicher Merge zur Erstellung eines neuen Commits, der das Ergebnis des Merges darstellt und die Spitzen der gemergten Branches als Eltern hat. Dieser Commit wird als "Merge-Commit" oder manchmal einfach als "Merge" bezeichnet.

Objekt

Die Speichereinheit in Git. Es wird eindeutig durch den SHA-1 seines Inhalts identifiziert. Folglich kann ein Objekt nicht geändert werden.

Objekt-Datenbank

Speichert eine Menge von "Objekten", und ein einzelnes Objekt wird durch seinen Objektnamen identifiziert. Die Objekte befinden sich normalerweise in $GIT_DIR/objects/.

Objektidentifikator (OID)

Synonym für Objektname.

Objektname

Der eindeutige Identifikator eines Objekts. Der Objektname wird normalerweise durch eine 40 Zeichen lange Hexadezimalzeichenkette dargestellt. Umgangssprachlich auch als SHA-1 bezeichnet.

Objekttyp

Einer der Identifikatoren "Commit", "Tree", "Tag" oder "Blob", der den Typ eines Objekts beschreibt.

Octopus

Mehr als zwei Branches mergen.

Waise

Die Handlung, auf einen Branch zu wechseln, der noch nicht existiert (d. h. ein ungeborener Branch). Nach einer solchen Operation wird der zuerst erstellte Commit zu einem Commit ohne Elternteil, was eine neue Historie beginnt.

Origin

Das Standard-Upstream-Repository. Die meisten Projekte haben mindestens ein Upstream-Projekt, das sie verfolgen. Standardmäßig wird *origin* zu diesem Zweck verwendet. Neue Upstream-Updates werden in die Remote-Tracking-Branches namens origin/name-des-upstream-branch geholt, die Sie mit git branch -r anzeigen können.

Overlay

Nur Dateien im Arbeitsverzeichnis aktualisieren und hinzufügen, aber nicht löschen, ähnlich wie *cp -R* den Inhalt im Zielverzeichnis aktualisieren würde. Dies ist der Standardmodus bei einem Checkout, wenn Dateien aus dem Index oder einem Tree-ish ausgecheckt werden. Im Gegensatz dazu löscht der No-Overlay-Modus auch verfolgte Dateien, die nicht in der Quelle vorhanden sind, ähnlich wie *rsync --delete*.

Pack

Eine Sammlung von Objekten, die in einer einzigen Datei komprimiert wurden (um Platz zu sparen oder sie effizient zu übertragen).

Pack-Index

Die Liste von Identifikatoren und anderen Informationen der Objekte in einem Pack, um den effizienten Zugriff auf den Inhalt eines Packs zu erleichtern.

Pfadangabe

Muster zur Einschränkung von Pfaden in Git-Befehlen.

Pfadangaben werden in der Befehlszeile von "git ls-files", "git ls-tree", "git add", "git grep", "git diff", "git checkout" und vielen anderen Befehlen verwendet, um den Geltungsbereich von Operationen auf eine Teilmenge des Baums oder des Arbeitsverzeichnisses zu beschränken. Lesen Sie die Dokumentation jedes Befehls, um zu erfahren, ob Pfade relativ zum aktuellen Verzeichnis oder zum obersten Verzeichnis sind. Die Pfadangabesyntax lautet wie folgt:

  • Jeder Pfad stimmt mit sich selbst überein.

  • Der Pfadangabe bis zum letzten Schrägstrich stellt ein Verzeichnispräfix dar. Der Geltungsbereich dieser Pfadangabe ist auf diesen Unterbaum beschränkt.

  • Der Rest der Pfadangabe ist ein Muster für den Rest des Pfadnamens. Pfade, die relativ zum Verzeichnispräfix liegen, werden mit fnmatch(3) mit diesem Muster verglichen; insbesondere können * und ? Trennzeichen für Verzeichnisse abgleichen.

Beispielsweise stimmt Documentation/*.jpg mit allen .jpg-Dateien im Unterbaum Documentation überein, einschließlich Documentation/chapter_1/figure_1.jpg.

Eine Pfadangabe, die mit einem Doppelpunkt ":" beginnt, hat eine besondere Bedeutung. In der Kurzform folgt auf den führenden Doppelpunkt ":" null oder mehr "Magische Signatur"-Buchstaben (die optional durch einen weiteren Doppelpunkt ":" beendet werden), und der Rest ist das Muster, das gegen den Pfad abgeglichen wird. Die "Magische Signatur" besteht aus ASCII-Symbolen, die weder alphanumerisch, noch Glob- oder Regex-Sonderzeichen, noch Doppelpunkte sind. Der optionale Doppelpunkt, der die "Magische Signatur" beendet, kann weggelassen werden, wenn das Muster mit einem Zeichen beginnt, das nicht zur Menge der "Magische Signatur"-Symbole gehört und kein Doppelpunkt ist.

In der Langform folgt auf den führenden Doppelpunkt ":" eine öffnende Klammer "(", eine durch Kommas getrennte Liste von null oder mehr "Magischen Wörtern" und eine schließende Klammer ")", und der Rest ist das Muster, das gegen den Pfad abgeglichen wird.

Eine Pfadangabe, die nur aus einem Doppelpunkt besteht, bedeutet "keine Pfadangabe". Diese Form sollte nicht mit anderen Pfadangaben kombiniert werden.

top

Das magische Wort top (magische Signatur: /) bewirkt, dass das Muster vom Stammverzeichnis des Arbeitsverzeichnisses aus abgeglichen wird, selbst wenn Sie den Befehl aus einem Unterverzeichnis ausführen.

literal

Platzhalter im Muster wie * oder ? werden als literale Zeichen behandelt.

icase

Groß-/Kleinschreibung ignorierender Abgleich.

glob

Git behandelt das Muster als Shell-Glob, das für die Verwendung mit fnmatch(3) mit dem FNM_PATHNAME-Flag geeignet ist: Platzhalter im Muster passen nicht zu einem / im Pfadnamen. Zum Beispiel stimmt "Documentation/*.html" mit "Documentation/git.html" überein, aber nicht mit "Documentation/ppc/ppc.html" oder "tools/perf/Documentation/perf.html".

Zwei aufeinanderfolgende Sternchen ("**") in Mustern, die gegen vollständige Pfadnamen abgeglichen werden, können eine besondere Bedeutung haben

  • Ein führendes "**" gefolgt von einem Schrägstrich bedeutet, dass in allen Verzeichnissen gesucht wird. Zum Beispiel stimmt "**/foo" mit der Datei oder dem Verzeichnis "foo" überall überein. "**/foo/bar" stimmt mit der Datei oder dem Verzeichnis "bar" überall überein, das sich direkt unter dem Verzeichnis "foo" befindet.

  • Ein abschließendes "/**" passt auf alles darin. Zum Beispiel passt "abc/**" auf alle Dateien im Verzeichnis "abc", relativ zum Speicherort der .gitignore-Datei, mit unendlicher Tiefe.

  • Ein Schrägstrich gefolgt von zwei aufeinanderfolgenden Sternchen und dann einem Schrägstrich passt zu null oder mehr Verzeichnissen. Zum Beispiel passt "a/**/b" zu "a/b", "a/x/b", "a/x/y/b" und so weiter.

  • Andere aufeinanderfolgende Sternchen gelten als ungültig.

    Glob-Magie ist mit Literal-Magie inkompatibel.

attr

Nach attr: folgt eine durch Leerzeichen getrennte Liste von "Attributanforderungen", die alle erfüllt sein müssen, damit der Pfad als übereinstimmend gilt; dies zusätzlich zur üblichen nicht-magischen Pfadangabenmusterübereinstimmung. Siehe gitattributes[5].

Jede der Attributanforderungen für den Pfad hat eine der folgenden Formen:

  • "ATTR" erfordert, dass das Attribut ATTR gesetzt ist.

  • "-ATTR" erfordert, dass das Attribut ATTR nicht gesetzt ist.

  • "ATTR=VALUE" erfordert, dass das Attribut ATTR auf den String VALUE gesetzt ist.

  • "!ATTR" erfordert, dass das Attribut ATTR nicht spezifiziert ist.

    Beachten Sie, dass bei der Übereinstimmung mit einem Baumobjekt Attribute immer noch aus dem Arbeitsverzeichnis bezogen werden, nicht aus dem gegebenen Baumobjekt.

ausschließen

Nachdem ein Pfad mit einer nicht-ausschließenden Pfadangabe übereinstimmt, wird er durch alle ausschließenden Pfadangaben (magische Signatur: ! oder ihr Synonym ^) geleitet. Wenn er übereinstimmt, wird der Pfad ignoriert. Wenn keine nicht-ausschließende Pfadangabe vorhanden ist, wird der Ausschluss auf das Ergebnis angewendet, als ob er ohne Pfadangabe aufgerufen worden wäre.

Elternteil

Ein Commit-Objekt enthält eine (möglicherweise leere) Liste der logischen Vorgänger im Entwicklungsstrang, d. h. seiner Eltern.

Schälen

Die Aktion des rekursiven Dereferenzierens eines Tag-Objekts.

Pickaxe

Der Begriff Pickaxe bezieht sich auf eine Option der Diffcore-Routinen, die hilft, Änderungen auszuwählen, die eine bestimmte Textzeichenkette hinzufügen oder löschen. Mit der Option --pickaxe-all kann es verwendet werden, um den gesamten Änderungssatz anzuzeigen, der z. B. eine bestimmte Textzeile eingeführt oder entfernt hat. Siehe git-diff[1].

Plumbing

Ein niedlicher Name für Core Git.

Porcelain

Ein niedlicher Name für Programme und Programmsuiten, die auf Core Git aufbauen und einen hochrangigen Zugriff auf Core Git bieten. Porcelains bieten mehr eine SCM-Schnittstelle als das Plumbing.

pro-Arbeitsverzeichnis-Referenz

Referenzen, die pro Arbeitsverzeichnis gelten, anstatt global. Dies sind derzeit nur HEAD und alle Referenzen, die mit refs/bisect/ beginnen, können aber später auch andere ungewöhnliche Referenzen umfassen.

Pseudoreferenz

Eine Referenz, die andere Semantik als normale Referenzen hat. Diese Referenzen können über normale Git-Befehle gelesen werden, aber nicht mit Befehlen wie git-update-ref[1] geschrieben werden.

Die folgenden Pseudoreferenzen sind Git bekannt:

  • FETCH_HEAD wird von git-fetch[1] oder git-pull[1] geschrieben. Sie kann sich auf mehrere Objekt-IDs beziehen. Jede Objekt-ID ist mit Metadaten annotiert, die angeben, von wo sie abgerufen wurde und ihren Abrufstatus.

  • MERGE_HEAD wird von git-merge[1] beim Auflösen von Merge-Konflikten geschrieben. Sie enthält alle Commit-IDs, die gemergt werden.

Pull

Einen Branch zu ziehen bedeutet, ihn abzurufen und zu mergen. Siehe auch git-pull[1].

Push

Einen Branch zu pushen bedeutet, die Head-Referenz des Branches aus einem Remote-Repository abzurufen, zu prüfen, ob sie ein Vorfahre der lokalen Head-Referenz des Branches ist, und in diesem Fall alle Objekte, die von der lokalen Head-Referenz erreichbar sind und die im Remote-Repository fehlen, in die Remote-Objekt-Datenbank zu legen und die Remote-Head-Referenz zu aktualisieren. Wenn der Remote-Head kein Vorfahre des lokalen Heads ist, schlägt der Push fehl.

erreichbar

Alle Vorfahren eines gegebenen Commits gelten als von diesem Commit "erreichbar". Allgemeiner gesagt ist ein Objekt von einem anderen erreichbar, wenn wir von einem zum anderen durch eine Kette gelangen können, die Tags zu dem verfolgt, was sie taggen, Commits zu ihren Eltern oder Bäumen und Bäume zu den Bäumen oder Blobs, die sie enthalten.

Erreichbarkeits-Bitmaps

Erreichbarkeits-Bitmaps speichern Informationen über die Erreichbarkeit eines ausgewählten Satzes von Commits in einem Packfile oder einem Multi-Pack-Index (MIDX), um die Objektsuche zu beschleunigen. Die Bitmaps werden in einer ".bitmap"-Datei gespeichert. Ein Repository kann höchstens eine Bitmap-Datei verwenden. Die Bitmap-Datei kann entweder zu einem Pack oder zum Multi-Pack-Index des Repositorys gehören (falls vorhanden).

Rebase

Eine Reihe von Änderungen aus einem Branch auf einer anderen Basis neu anzuwenden und den Head dieses Branches auf das Ergebnis zurückzusetzen.

Referenz

Ein Name, der auf einen Objektnamen oder eine andere Referenz zeigt (letztere wird als symbolische Referenz bezeichnet). Der Einfachheit halber kann eine Referenz bei der Verwendung als Argument für einen Git-Befehl manchmal abgekürzt werden; siehe gitrevisions[7] für Details. Referenzen werden im Repository gespeichert.

Der Referenz-Namensraum ist hierarchisch. Referenznamen müssen entweder mit refs/ beginnen oder sich im Stammverzeichnis der Hierarchie befinden. Für letztere müssen ihre Namen die folgenden Regeln befolgen

  • Der Name besteht nur aus Großbuchstaben oder Unterstrichen.

  • Der Name endet mit "_HEAD" oder ist gleich "HEAD".

    Es gibt einige unregelmäßige Referenzen im Stammverzeichnis der Hierarchie, die diesen Regeln nicht entsprechen. Die folgende Liste ist erschöpfend und sollte in Zukunft nicht erweitert werden

  • AUTO_MERGE

  • BISECT_EXPECTED_REV

  • NOTES_MERGE_PARTIAL

  • NOTES_MERGE_REF

  • MERGE_AUTOSTASH

    Verschiedene Unterhierarchien werden für unterschiedliche Zwecke verwendet. Zum Beispiel wird die Hierarchie refs/heads/ verwendet, um lokale Branches darzustellen, während die Hierarchie refs/tags/ verwendet wird, um lokale Tags darzustellen.

Reflog

Ein Reflog zeigt die lokale "Historie" einer Referenz. Mit anderen Worten, es kann Ihnen sagen, was die 3. letzte Revision in *diesem* Repository war und was gestern um 21:14 Uhr der aktuelle Zustand in *diesem* Repository war. Einzelheiten finden Sie unter git-reflog[1].

Refspec

Ein "Refspec" wird von fetch und push verwendet, um die Zuordnung zwischen Remote-Referenzen Referenz und lokalen Referenzen zu beschreiben. Einzelheiten finden Sie unter git-fetch[1] oder git-push[1].

Remote-Repository

Ein Repository, das zur Nachverfolgung desselben Projekts verwendet wird, aber woanders residiert. Zur Kommunikation mit Remotes siehe fetch oder push.

Remote-Tracking-Branch

Eine Referenz, die verwendet wird, um Änderungen von einem anderen Repository zu verfolgen. Sie sieht typischerweise so aus: refs/remotes/foo/bar (was darauf hindeutet, dass sie einen Branch namens bar in einem Remote namens foo verfolgt) und entspricht der rechten Seite eines konfigurierten Fetch-Refspecs Refspec. Ein Remote-Tracking-Branch sollte keine direkten Modifikationen enthalten oder lokale Commits darauf gemacht haben.

Repository

Eine Sammlung von Referenzen zusammen mit einer Objektdatenbank, die alle Objekte enthält, die von den Referenzen erreichbar sind, möglicherweise ergänzt durch Metadaten aus einem oder mehreren Porcelains. Ein Repository kann eine Objektdatenbank über den Mechanismus Alternates mit anderen Repositories teilen.

Auflösen

Die Aktion, manuell zu beheben, was ein fehlgeschlagener automatischer Merge hinterlassen hat.

Revision

Synonym für Commit (das Nomen).

Zurückspulen

Teile der Entwicklung verwerfen, d.h. den Head auf eine frühere Revision setzen.

SCM

Source Code Management (Werkzeug).

SHA-1

"Secure Hash Algorithm 1"; eine kryptografische Hash-Funktion. Im Kontext von Git als Synonym für Objektname verwendet.

Shallow Clone

Größtenteils ein Synonym für Shallow Repository, aber der Ausdruck macht deutlicher, dass es durch Ausführen des Befehls git clone --depth=... erstellt wurde.

Shallow Repository

Ein flaches Repository hat eine unvollständige Historie, von der einige Commits ihre Eltern "verätzt" haben (mit anderen Worten, Git wird angewiesen, so zu tun, als hätten diese Commits keine Eltern, obwohl sie im Commit-Objekt aufgezeichnet sind). Dies ist manchmal nützlich, wenn Sie nur an der jüngsten Historie eines Projekts interessiert sind, obwohl die tatsächliche Historie, die im Upstream aufgezeichnet ist, viel größer ist. Ein flaches Repository wird erstellt, indem die Option --depth an git-clone[1] übergeben wird, und seine Historie kann später mit git-fetch[1] vertieft werden.

Stash-Eintrag

Ein Objekt, das verwendet wird, um den Inhalt eines unsauberen Arbeitsverzeichnisses und des Index für die zukünftige Wiederverwendung vorübergehend zu speichern.

Submodul

Ein Repository, das die Historie eines separaten Projekts innerhalb eines anderen Repositorys enthält (letzteres wird als Superprojekt bezeichnet).

Superprojekt

Ein Repository, das Repositories anderer Projekte in seinem Arbeitsbaum als Submodule referenziert. Das Superprojekt kennt die Namen von (hält aber keine Kopien davon) Commit-Objekten der enthaltenen Submodule.

Symbolische Referenz

Symbolische Referenz: Anstatt die SHA-1-ID selbst zu enthalten, hat sie das Format ref: refs/some/thing und wird beim Referenzieren rekursiv zu dieser Referenz dereferenziert. HEAD ist ein Paradebeispiel für eine symbolische Referenz. Symbolische Referenzen werden mit dem Befehl git-symbolic-ref[1] manipuliert.

Tag

Eine Referenz im Namensraum refs/tags/, die auf ein Objekt eines beliebigen Typs zeigt (typischerweise zeigt ein Tag entweder auf ein Tag-Objekt oder ein Commit-Objekt). Im Gegensatz zu einem Head wird ein Tag nicht durch den Befehl commit aktualisiert. Ein Git-Tag hat nichts mit einem Lisp-Tag zu tun (das im Git-Kontext als Objekttyp bezeichnet würde). Ein Tag wird typischerweise verwendet, um einen bestimmten Punkt in der Commit-Abstammungskette Kette zu markieren.

Tag-Objekt

Ein Objekt, das eine Referenz enthält, die auf ein anderes Objekt zeigt, welches eine Nachricht wie ein Commit-Objekt enthalten kann. Es kann auch eine (PGP-)Signatur enthalten, in diesem Fall wird es als "signiertes Tag-Objekt" bezeichnet.

Themen-Branch

Ein regulärer Git Branch, der von einem Entwickler verwendet wird, um eine konzeptionelle Entwicklungslinie zu identifizieren. Da Branches sehr einfach und kostengünstig sind, ist es oft wünschenswert, mehrere kleine Branches zu haben, die jeweils sehr gut definierte Konzepte oder kleine inkrementelle, aber verwandte Änderungen enthalten.

Trailer

Schlüssel-Wert-Metadaten. Trailer finden sich optional am Ende einer Commit-Nachricht. Können in anderen Communities auch als "Footer" oder "Tags" bezeichnet werden. Siehe git-interpret-trailers[1].

Tree

Entweder ein Arbeitsbaum oder ein Tree-Objekt zusammen mit den abhängigen Blob- und Tree-Objekten (d.h. eine gespeicherte Darstellung eines Arbeitsbaums).

Tree-Objekt

Ein Objekt, das eine Liste von Dateinamen und Modi zusammen mit Referenzen auf die zugehörigen Blob- und/oder Tree-Objekte enthält. Ein Tree ist gleichbedeutend mit einem Verzeichnis.

Tree-ish (auch treeish)

Ein Tree-Objekt oder ein Objekt, das rekursiv zu einem Tree-Objekt dereferenziert werden kann. Das Dereferenzieren eines Commit-Objekts ergibt das Tree-Objekt, das dem obersten Verzeichnis der Revision entspricht. Die folgenden sind alle Tree-ishes: ein Commit-ish, ein Tree-Objekt, ein Tag-Objekt, das auf ein Tree-Objekt zeigt, ein Tag-Objekt, das auf ein Tag-Objekt zeigt, das auf ein Tree-Objekt zeigt, usw.

Ungeboren

Der HEAD kann auf einen Branch zeigen, der noch nicht existiert und auf dem noch kein Commit vorhanden ist; ein solcher Branch wird als ungeborener Branch bezeichnet. Die typischste Art, wie Benutzer auf einen ungeborenen Branch stoßen, ist die Neuerstellung eines Repositorys, ohne von woanders zu klonen. Der HEAD würde auf den main (oder master, je nach Konfiguration) Branch zeigen, der noch geboren werden muss. Auch einige Operationen können Sie mit ihrer Orphan-Option auf einen ungeborenen Branch bringen.

Unmerged Index

Ein Index, der ungemergte Index-Einträge enthält.

Unerreichbares Objekt

Ein Objekt, das von keinem Branch, Tag oder einer anderen Referenz erreichbar ist.

Upstream-Branch

Der Standard- Branch, der in den fraglichen Branch gemergt wird (oder auf den der fragliche Branch gerebased wird). Er wird über branch.<name>.remote und branch.<name>.merge konfiguriert. Wenn der Upstream-Branch von *A* origin/B ist, sagen wir manchmal "A verfolgt origin/B".

Arbeitsbaum

Der Baum der tatsächlich ausgecheckten Dateien. Der Arbeitsbaum enthält normalerweise den Inhalt des Trees des HEAD-Commits plus alle lokalen Änderungen, die Sie vorgenommen, aber noch nicht committet haben.

Worktree

Ein Repository kann null (d.h. ein Bare-Repository) oder ein oder mehrere Worktrees haben, die daran angehängt sind. Ein "Worktree" besteht aus einem "Arbeitsbaum" und Repository-Metadaten, von denen die meisten mit anderen Worktrees eines einzelnen Repositorys geteilt werden, und einige davon werden pro Worktree separat verwaltet (z. B. der Index, HEAD und Pseudoreferenzen wie MERGE_HEAD, pro-Worktree-Referenzen und pro-Worktree-Konfigurationsdatei).

GIT

Teil der git[1] Suite