Eine einfache Terminal-Benutzeroberfläche für Git-Befehle
Die Aufrechterhaltung dieses Projekts wird durch alle Mitwirkenden und Sponsoren ermöglicht. Wenn Sie dieses Projekt sponsern möchten und Ihr Avatar oder Firmenlogo unten erscheinen soll, klicken Sie hier. ?
Rant time: Sie haben es schon einmal gehört, Git ist mächtig , aber was nützt diese Macht, wenn alles so verdammt schwer zu machen ist? Für die interaktive Umbasierung müssen Sie eine verdammte TODO-Datei in Ihrem Editor bearbeiten? Willst du mich verarschen? Um einen Teil einer Datei bereitzustellen, müssen Sie ein Befehlszeilenprogramm verwenden, um die einzelnen Hunks schrittweise zu durchlaufen. Wenn ein Hunk nicht weiter aufgeteilt werden kann, aber Code enthält, den Sie nicht bereitstellen möchten, müssen Sie eine obskure Patchdatei bearbeiten von Hand ? Willst du mich verarschen?! Manchmal werden Sie aufgefordert, Ihre Änderungen zu speichern, wenn Sie den Zweig wechseln, und stellen dann fest, dass es nach dem Wechsel und der Entsicherung nicht einmal Konflikte gab und es in Ordnung gewesen wäre, den Zweig einfach direkt auszuchecken? Du musst mich veräppeln!
Wenn du ein normaler Sterblicher wie ich bist und es satt hast zu hören, wie mächtig Idiot ist, obwohl er dir im Alltag sehr auf die Nerven geht, dann ist Lazygit vielleicht das Richtige für dich.
Lazygit ist nicht mein Vollzeitjob, aber es ist ein anstrengender Teilzeitjob. Wenn Sie also das Projekt unterstützen möchten, denken Sie bitte darüber nach, mich zu sponsern
Drücken Sie die Leertaste auf der ausgewählten Zeile, um sie bereitzustellen, oder drücken Sie v
um mit der Auswahl eines Zeilenbereichs zu beginnen. Sie können auch a
drücken, um den gesamten aktuellen Block auszuwählen.
Drücken Sie i
um eine interaktive Rebase zu starten. Anschließend alle TODO-Commits stauchen ( s
), reparieren ( f
), löschen ( d
), bearbeiten ( e
), nach oben verschieben ( ctrl+i
) oder nach unten verschieben ( ctrl+j
), bevor Sie mit dem Rebase fortfahren, indem Sie das Rebase aufrufen Öffnen Sie das Optionsmenü mit m
und wählen Sie dann continue
aus.
Sie können diese Aktionen auch einmalig ausführen (z. B. durch Drücken s
bei einem Commit, um es zu unterdrücken), ohne explizit einen Rebase zu starten.
In dieser Demo wird auch Umschalt+Runter verwendet, um eine Reihe von Commits zum Verschieben und Korrigieren auszuwählen.
Drücken Sie bei einem Commit shift+c
um es zu kopieren, und drücken Sie shift+v
, um es einzufügen (Rosinenauswahl zu treffen).
Drücken Sie b
in der Commits-Ansicht, um einen Commit als gut/schlecht zu markieren und eine Git-Halbierung zu beginnen.
Wenn Sie wirklich einfach alles loswerden möchten, was angezeigt wird, wenn Sie git status
(und ja, dazu gehören auch schmutzige Submodule) im Kidpix-Stil ausführen, drücken Sie shift+d
um das Optionsmenü zum Zurücksetzen aufzurufen, und wählen Sie dann die Option „Nuke“.
Durch Drücken von shift+a
bei einem beliebigen Commit wird dieser Commit mit den aktuell bereitgestellten Änderungen ergänzt (durch Ausführen eines interaktiven Rebase im Hintergrund).
Sie können eine Ansicht mit /
filtern. Hier filtern wir unsere Branches-Ansicht nach unten und drücken dann enter
um die Commits anzuzeigen.
Lazygit verfügt über ein sehr flexibles benutzerdefiniertes Befehlssystem. In diesem Beispiel wird ein benutzerdefinierter Befehl definiert, der die integrierte Aktion zum Auschecken von Zweigen emuliert.
Sie können Arbeitsbäume erstellen, um mehrere Zweige gleichzeitig auszuführen, ohne dass beim Wechseln zwischen ihnen Stashing oder WIP-Commits erstellt werden müssen. Drücken Sie w
in der Zweigansicht, um einen Arbeitsbaum aus dem ausgewählten Zweig zu erstellen und zu diesem zu wechseln.
Sie können einen benutzerdefinierten Patch aus einem alten Commit erstellen und dann den Patch aus dem Commit entfernen, einen neuen Commit aufteilen, den Patch umgekehrt auf den Index anwenden und vieles mehr.
In diesem Beispiel haben wir einen überflüssigen Kommentar, den wir aus einem alten Commit entfernen möchten. Wir drücken
beim Commit, um seine Dateien anzuzeigen, dann
bei einer Datei, um den Patch zu fokussieren, dann
um die Kommentarzeile zu unserem benutzerdefinierten Patch hinzuzufügen, und dann ctrl+p
um die benutzerdefinierten Patch-Optionen anzuzeigen ; Auswählen, den Patch aus dem aktuellen Commit zu entfernen.
Erfahren Sie mehr im Rebase Magic Youtube-Tutorial.
Angenommen, Sie befinden sich in einem Feature-Branch, der selbst vom Develop-Branch abgezweigt wurde, und Sie haben entschieden, dass Sie lieber vom Master-Branch abzweigen möchten. Sie benötigen eine Möglichkeit, nur die Commits aus Ihrem Feature-Branch neu zu basieren. In dieser Demo überprüfen wir, welches der letzte Commit im Entwicklungszweig war, drücken dann shift+b
um diesen Commit als unseren Basis-Commit zu markieren, und drücken dann r
im Master-Zweig, um auf ihn umzubasieren, wobei wir nur die Commits von unserem übernehmen Feature-Zweig. Dann pushen wir unsere Änderungen mit shift+p
.
Sie können die letzte Aktion rückgängig machen, indem Sie „z“ drücken und mit ctrl+z
wiederholen. Hier löschen wir ein paar Commits und machen dann die Aktionen rückgängig. Beim Rückgängigmachen wird das Reflog verwendet, das speziell für Commits und Branches gilt, sodass wir Änderungen am Arbeitsbaum oder Stash nicht rückgängig machen können.
Weitere Informationen
Wenn Sie das Commit-Diagramm in einem vergrößerten Fenster anzeigen (verwenden Sie +
und _
, um die Fenstergröße zu wechseln), wird das Commit-Diagramm angezeigt. Die Farben entsprechen den Commit-Autoren, und wenn Sie im Diagramm nach unten navigieren, werden die übergeordneten Commits des ausgewählten Commits hervorgehoben.
Wenn Sie bei einem Commit (oder Branch/Ref) shift+w
drücken, öffnet sich ein Menü, in dem Sie diesen Commit markieren können, sodass jeder andere von Ihnen ausgewählte Commit mit ihm verglichen wird. Sobald Sie den zweiten Commit ausgewählt haben, sehen Sie das Diff in der Hauptansicht und wenn Sie
drücken, werden die Dateien des Diffs angezeigt. Sie können shift+w
drücken, um das Diff-Menü erneut anzuzeigen und Optionen wie das Umkehren der Diff-Richtung oder das Verlassen des Diff-Modus anzuzeigen. Sie können den Diff-Modus auch verlassen, indem Sie
drücken.
Die meisten der oben genannten Pakete werden von Dritten verwaltet. Überprüfen Sie sie daher unbedingt selbst und vergewissern Sie sich, dass es sich bei dem Betreuer um eine vertrauenswürdige Person handelt, die lokale Sportspiele besucht und mit Grill-Spendenaktionen usw. etwas an ihre Gemeinden zurückgibt
Für Windows, Mac OS (10.12+) oder Linux können Sie hier eine Binärversion herunterladen.
Normalerweise ist die Lazygit-Formel im Homebrew-Kern zu finden, wir empfehlen Ihnen jedoch, auf unsere Formel zu tippen, um die häufig aktualisierte Formel zu erhalten. Es funktioniert auch mit Linux.
Klopfen:
brew install jesseduffield/lazygit/lazygit
Kern:
brew install lazygit
Neueste Version, erstellt aus Github-Releases. Klopfen:
sudo port install lazygit
Pakete für Void Linux sind im Distributions-Repository verfügbar
Sie folgen den neuesten Upstream-Veröffentlichungen
sudo xbps-install -S lazygit
Sie können lazygit
mit Scoop installieren. Es befindet sich im extras
-Bereich:
# Add the extras bucket
scoop bucket add extras
# Install lazygit
scoop install lazygit
Pakete für Arch Linux sind über Pacman und AUR (Arch User Repository) verfügbar.
Es gibt zwei Pakete. Die stabile Version, die mit der neuesten Version erstellt wird, und die Git-Version, die mit dem neuesten Commit erstellt wird.
sudo pacman -S lazygit
Eine Anleitung zur Installation von AUR-Inhalten finden Sie hier: https://wiki.archlinux.org/index.php/Arch_User_Repository
Pakete für Fedora/RHEL und CentOS Stream sind über Copr (Cool Other Package Repo) verfügbar.
sudo dnf copr enable atim/lazygit -y
sudo dnf install lazygit
sudo eopkg install lazygit
LAZYGIT_VERSION= $( curl -s " https://api.github.com/repos/jesseduffield/lazygit/releases/latest " | grep -Po ' "tag_name": "vK[^"]* ' )
curl -Lo lazygit.tar.gz " https://github.com/jesseduffield/lazygit/releases/latest/download/lazygit_ ${LAZYGIT_VERSION} _Linux_x86_64.tar.gz "
tar xf lazygit.tar.gz lazygit
sudo install lazygit /usr/local/bin
Überprüfen Sie die korrekte Installation von Lazygit:
lazygit --version
Funtoo Linux hat ein automatisch generiertes Lazygit-Paket im Dev-Kit:
sudo emerge dev-vcs/lazygit
Lazygit ist (noch) nicht in der Hauptportage von Gentoo enthalten, es ist jedoch ein Ebuild im GURU-Overlay verfügbar
Sie können entweder das Overlay zu Ihrem System hinzufügen und Lazygit wie gewohnt installieren:
sudo eselect repository enable guru
sudo emaint sync -r guru
sudo emerge dev-vcs/lazygit
Das Lazygit-Paket wird derzeit in devel:sprachen:go/lazygit erstellt.
Um Lazygit auf openSUSE Tumbleweed zu installieren, führen Sie Folgendes aus:
sudo zypper ar https://download.opensuse.org/repositories/devel:/languages:/go/openSUSE_Factory/devel:languages:go.repo
sudo zypper ref && sudo zypper in lazygit
Um Lazygit auf openSUSE Leap zu installieren, führen Sie Folgendes aus:
source /etc/os-release
sudo zypper ar https://download.opensuse.org/repositories/devel:/languages:/go/ $VERSION_ID /devel:languages:go.repo
sudo zypper ref && sudo zypper in lazygit
Auf NixOs wird Lazygit mit Nix gepackt und über Nixpkgs verteilt. Sie können Lazygit ausprobieren, ohne es zu installieren mit:
nix-shell -p lazygit
# or with flakes enabled
nix run nixpkgs#lazygit
Oder Sie können Lazygit zu Ihrer Datei „configuration.nix“ im Abschnitt „environment.systemPackages“ hinzufügen. Weitere Details finden Sie auf der Suchseite von NixO.
Lazygit kann wie folgt in einer Flox-Umgebung installiert werden.
flox install lazygit
Weitere Details zu Flox finden Sie auf ihrer Website.
pkg install lazygit
apt install lazygit
Freigegebene Versionen sind für verschiedene Plattformen verfügbar, siehe https://anaconda.org/conda-forge/lazygit
conda install -c conda-forge lazygit
go install github.com/jesseduffield/lazygit@latest
Bitte beachten Sie: Wenn Sie eine Fehlermeldung erhalten, dass Lazygit nicht gefunden werden kann oder nicht definiert ist, müssen Sie möglicherweise ~/go/bin
zu Ihrem $PATH (MacOS/Linux) oder %HOME%gobin
(Windows) hinzufügen. . Nicht zu verwechseln mit C:Gobin
(das für Gos eigene Binärdateien steht, nicht für Apps wie Lazygit).
Sie können lazygit
mit Chocolatey installieren:
choco install lazygit
Sie können lazygit
mit dem winget
-Befehl im Windows-Terminal mit dem folgenden Befehl installieren:
winget install - e -- id = JesseDuffield.lazygit
Sie müssen Go installieren
git clone https://github.com/jesseduffield/lazygit.git
cd lazygit
go install
Sie können auch go run main.go
verwenden, um in einem Rutsch zu kompilieren und auszuführen (Wortspiel definitiv beabsichtigt)
Rufen Sie lazygit
in Ihrem Terminal in einem Git-Repository auf.
$ lazygit
Wenn Sie möchten, können Sie hierfür auch einen Alias mit echo "alias lg='lazygit'" >> ~/.zshrc
(oder die von Ihnen verwendete RC-Datei) hinzufügen.
Die Liste der Tastenkombinationen finden Sie hier.
Wenn Sie Repos in Lazygit ändern und möchten, dass Ihre Shell beim Beenden von Lazygit in dieses Repo wechselt, fügen Sie Folgendes zu Ihrer ~/.zshrc
(oder einer anderen RC-Datei) hinzu:
lg()
{
export LAZYGIT_NEW_DIR_FILE=~/.lazygit/newdir
lazygit "$@"
if [ -f $LAZYGIT_NEW_DIR_FILE ]; then
cd "$(cat $LAZYGIT_NEW_DIR_FILE)"
rm -f $LAZYGIT_NEW_DIR_FILE > /dev/null
fi
}
Dann source ~/.zshrc
und von nun an wechseln Sie beim Aufrufen lg
und beim Beenden zu den Verzeichnissen, in denen Sie sich in Lazygit befanden. Um dieses Verhalten außer Kraft zu setzen, können Sie den Vorgang mit shift+Q
statt nur mit q
beenden.
Siehe die Dokumente
Schauen Sie sich die Konfigurationsdokumente an.
Siehe die Dokumente
Wenn Lazygit eine Funktion fehlt, besteht eine gute Chance, dass Sie sie mit einem benutzerdefinierten Befehl selbst implementieren können!
Siehe die Dokumente
Lazygit unterstützt Gitflow, wenn Sie es installiert haben. Um zu verstehen, wie das Gitflow-Modell funktioniert, schauen Sie sich Vincent Driessens Originalbeitrag an, in dem es erklärt wird. Um Gitflow-Optionen in Lazygit anzuzeigen, drücken Sie i
in der Zweigansicht.
Wir freuen uns über Ihren Beitrag! Bitte schauen Sie sich den beitragenden Leitfaden an. Treten Sie dem Discord-Kanal bei, um Mitwirkende über Dinge zu diskutieren, die hier im Repo nicht besser besprochen werden
Schauen Sie sich dieses Video an, in dem Sie durch die Erstellung einer kleinen Funktion in Lazygit gehen, wenn Sie eine Vorstellung davon haben möchten, wo Sie anfangen sollen.
Führen Sie lazygit --debug
in einem Terminal-Tab und lazygit --logs
in einem anderen aus, um das Programm und seine Protokollausgabe nebeneinander anzuzeigen
Wenn Sie die Entwicklung von Lazygit unterstützen möchten, denken Sie darüber nach, mich zu sponsern (Github verdoppelt alle Spenden Dollar für Dollar für 12 Monate).
Wenn Sie sehen möchten, was ich (Jesse) in Sachen Entwicklung vorhabe, folgen Sie mir auf Twitter oder schauen Sie sich meinen Blog an
Wenn Sie feststellen, dass Lazygit Ihre Anforderungen nicht ganz erfüllt, passen diese möglicherweise besser: