Deutsch

GIT – Git

GIT Ein Git-Repository wird wie ein Ordner durchsucht: die geänderten Dateien, die Branches, der Verlauf.

Ein Repository öffnen

Die Schaltfläche GIT der Leiste springt zum Favoritenprojekt; ihr Rechtsklick liefert die Liste: die bekannten Repositories, „Commit…“, „Verlauf…“, die Branches, „Stash…“ und „Stashes“, „Tags…“, „Remotes“. Ein Ordner auf dem Datenträger, der noch kein Repository ist, bietet dort „Repository hier klonen…“ an. Die Projekte fügen sich beim Betreten von selbst hinzu, und ein Projekt, dessen Ordner verschwunden ist, wird vergessen – außer wenn es sein Datenträger ist, der fehlt: Ein abgezogener Stick lässt nichts vergessen.

Der Zustand eines Ordners

Jede Zeile trägt ihre Farbe: in Konflikt, nicht verfolgt, geändert, vorgemerkt, ignoriert. Eine Datei wird von git auf zwei Achsen beschrieben – dem Index und der Arbeitskopie – und eine Zeile hat nicht die Mittel, beide zu zeigen: Was noch zu tun bleibt, entscheidet über die Farbe. Die Pfadleiste nennt den aktuellen Branch.

Vormerken und committen

„Commit…“ öffnet die Ansicht der Änderungen: eine Datei pro Zeile, die Spalte Verfolgt sagt, was git darüber weiß. Man bezeichnet die Zeilen wie überall sonst – Klick, Strg+Klick, Umschalt+Klick –, schreibt unten die Nachricht, und Committen startet mit dem, was ausgewählt ist. Nichts ausgewählt, nichts geht raus: Die Schaltfläche sagt es.

Die Schaltfläche Nicht verfolgt in der Commit-Leiste blendet aus, was git nicht verfolgt: Ein Ordner voller Wegwerfdateien verdeckt nicht mehr die zwei, die man committen will, und Ctrl+A nimmt sie nicht mehr mit. Abgewählt zeigt sie, wie viele sie ausblendet.

Die Ansicht der Änderungen eines Repositorys: drei Dateien, ihr Verfolgungszustand und unten die Commit-Leiste.
Die Änderungen des Repositorys und die Commit-Leiste: die Nachricht, das Ausgewählte und die Schaltfläche.

Unterschiede ansehen

„Unterschiede anzeigen“ öffnet den Diff Block für Block, zwischen der Arbeitskopie, dem Index (vorgemerkt) und einem Commit – vorher und nachher sind dort benannt. Eine Binärdatei sagt das lieber, als Datenmüll zu zeigen.

Die Handgriffe

Die Branches und der Verlauf

Einen Branch anlegen, darauf wechseln, zusammenführen – der Eintrag trägt den Namen des Branches und antwortet nichts zusammenzuführen: bereits aktuell oder Zusammenführung abgebrochen: Dateien sind in Konflikt. „Verlauf…“ listet die Commits auf: ihren kurzen Hash, ihren Betreff, ihren Autor, ihr Datum. Die linke Randspalte zeichnet den Graphen, jede Zeile auf ihrer eigenen, und ein Merge zieht seinen Strich zur Nachbarspalte. Ein Doppelklick öffnet die Details eines Commits: seine vollständige Nachricht und die Dateien, die er berührt hat.

Der Verlauf eines Repositorys: vier Commits, ihr Betreff, ihr Autor und der Branch-Graph in der Randspalte.
Der Verlauf, sein Graph in der Randspalte: zwei Branches, die von derselben Wurzel ausgehen, und der Merge, der sie wieder zusammenführt.

Der Merge-Request-Baum

Merge-Request-Baum… im Menü der GIT-Schaltfläche zeichnet die offenen MRs des GitLab-Projekts, auf das das Remote zeigt. Jeder steht unter dem Branch, von dem er ausgeht, um eine Stufe eingerückt wie ein Inhaltsverzeichnis: Die Stufe gibt die Reihenfolge der Freigabe an, und ein Klick auf eine Karte öffnet den MR im Browser.

Der Merge-Request-Baum eines Repositorys: main, seine eingerückten MRs und eine Kette von drei voneinander abgezweigten MRs
!31 wurde von !28 abgezweigt und !35 von !31: Jeder steht unter dem, dessen Commits er trägt, mit „nach“ und „Ziel main“. Die Schaltfläche rechts checkt den Branch aus; das Häkchen markiert main, wo man ist.

Mit dem Remote-Repository austauschen

„Pull (holen)“ und „Push (senden)“, mit der Zahl der betroffenen Commits neben der Beschriftung – die Null wird nicht geschrieben. Ein Branch, der gegenüber noch nicht existiert, geht mit seinem Upstream hinaus. Die Remotes werden im selben Menü deklariert und entfernt. Verlangt der Server einen Nachweis, fragt Meneaufile seinerseits danach, statt wortlos hängen zu bleiben.

Beiseitelegen

„Stash…“ legt die laufende Arbeit beiseite, ohne sie zu committen, mit optionaler Beschreibung; „Stashes“ – Beiseitegelegte Arbeit – listet auf, was wartet, und von dort nimmt man wieder auf oder verwirft. „Tags…“ setzt und entfernt Tags auf dieselbe Weise.

Wer diese Zeile geschrieben hat

„Zeilenherkunft“ im Menü einer Datei ordnet jede Zeile ihrem Commit und ihrem Autor zu. Das ist die Frage, die man sich vor einer überraschenden Zeile stellt, und eine Liste von Commits beantwortet sie nicht.

Die Konflikte

Eine Datei in Konflikt öffnet sich mit ihren Fassungen: der gemeinsamen Fassung, unserer, ihrer und dem Ergebnis, das man aufbaut. „Alles übernehmen“ übernimmt eine ganze Seite, „Auflösen“ speichert – und die Datei verlässt die Kategorie in Konflikt.

Klonen

Aus einem Ordner: die Adresse (https://… oder git@host:org/repo.git), der Name des anzulegenden Ordners und ein vollständiger oder flacher Verlauf – die letzten N Commits.

Die Bundles

Eine .bundle-Datei ist ein Git-Repository, verpackt in eine einzige Datei: So nimmt man ein Projekt auf einem Stick mit oder gibt es jemandem weiter, ohne Server. Ein Doppelklick zeigt, was sie enthält – ihre Branches, ihre Tags –, und Hier klonen… macht daraus ein gewöhnliches Repository, gleich daneben, ohne Netzwerk. In einem Repository verpackt Bundle erstellen… im Menü von GIT das ganze Repository in den Ordner der anderen Ansicht.

Wenn git fehlt

Meneaufile ruft das git des Systems auf. Fehlt es oder liegt es nicht im PATH, sagt es das, statt ohne Grund zu scheitern.

Meneaufile-Handbuch, auf Deutsch.