Entwickler-Hacks

Entwickler-Hacks: Befehlszeilentools und Git-Befehle

vg

Die Arbeit mit dem Terminal und mit Git gehören zu den grundlegenden Techniken für Entwickler. In diesem Artikel werden ein modernes Entwicklungssetup, modernste Alternativen zu klassischen Shell-Programmen und erweiterte Git-Befehle vorgestellt. Die Verwendung dieser Entwickler-Hacks hilft Ihnen, Ihre Projekte einfacher und schneller zu navigieren, sodass Sie sich auf das konzentrieren können, was wirklich wichtig ist: die Entwicklung großartiger Software.

Moderne Shell-Befehle

Für viele der klassischen Befehle wie lscatfind etc. gibt es moderne Alternativen. Im Vergleich zu ihren traditionellen Gegenstücken sind diese Shell-Befehle oft schneller (da sie oft in Rust geschrieben sind), farbenfroher und bequemer, z.B. durch die Berücksichtigung von Gitignore-Dateien.

LS-Alternativen: Eza und LSD

Eza und LSD bieten beide eine bessere Dateiauflistung mit farblicher Hervorhebung, Symbolen und zusätzlicher Konfigurierbarkeit.

Bat: cat mit Flügeln

bat ist ein Textdatei-Viewer, der Zeilennummern, Syntaxhervorhebung und Git-Änderungen verwendet. Es verwendet Paging für eine längere Ausgabe (Lauftext wie bei less), verwendet jedoch standardmäßig einfaches Drucken, wenn es für Rohrleitungen verwendet wird.

du zu dust

Für die Anzeige von Datei- und Ordnergrößen bietet dust eine besser sortierte und visualisierte Ausgabe als das klassische du.

FD: Ein besserer find

fd ist eine moderne Alternative zum Suchen, um nach Dateien zu suchen, viel schneller und mit saubererer Syntax: fd PATTERN anstelle von find -iname ‚*PATTERN*‘.

RIP, grep: ripgrep

Ein Tool zum Suchen von Text in Dateien. Mit einer vernünftigen Standardeinstellung berücksichtigt ripgrep gitignore-Regeln und ignoriert versteckte und binäre Dateien. Mehrmals schneller als das ursprüngliche grep.

SED zu SD

SED wird in der Regel zum Ersetzen von Text verwendet. sd tut dies mit einer einfacheren Syntax:

HTOP-Alternativen: Bottom, Glances und Btop

Für das klassische htop-Tool zur Überprüfung des Systemstatus sind moderne Alternativen zum Beispiel bottomglances oder btop (es gibt noch mehr). Obwohl sie weitgehend die gleichen Systemmetriken verwenden, unterscheiden sie sich in ihrer Anpassbarkeit und der Art und Weise, wie Daten angezeigt und visualisiert werden.

fzf: Fuzzy-Finder

fzf sucht Text mit einer sogenannten Fuzzy-Suche: Es findet auch leicht unterschiedliche Schreibweisen, bei denen Zeichen weggelassen werden. Textdateien, Shell-Historie oder die Ausgabe anderer Befehle. Das fzf-zsh-plugin ermöglicht es Ihnen, Ihre Befehlshistorie automatisch mit fzf zu durchsuchen, wenn Sie ^R eingeben.

Fuck

Das Tool The Fuck korrigiert automatisch Tippfehler in Konsolenbefehlen. Anstatt zurückzugehen und Ihren Tippfehler manuell zu korrigieren, geben Sie einfach fuck ein und es wird der richtige Befehl vorgeschlagen (den Sie sofort mit der Eingabetaste ausführen können).

Erweiterte Git-Befehle

Abgesehen von den alltäglichen Befehlen – git init, clone, git pull, add, commit, git push, diff oder show – gibt es einige Git-Funktionen, die Ihnen das Leben in vielen Situationen erheblich erleichtern können. Lassen Sie mich einen Überblick über diese hilfreichen Entwickler-Hacks geben.

(Globale) Konfigurationsoptionen

Ein paar hilfreiche Optionen sind (gesetzt mit git config –global):

  • merge.conflictstyle zdiff3: Bei Zusammenführungskonflikten werden zusätzlich zu den divergierten Versionen die ursprünglichen Zeilen angezeigt
  • pull.rebase true: Rebase für Ihren lokalen Zweig immer, wenn der Upstream-Zweig zusätzliche Commits enthält.
  • push.autoSetupRemote true: Beim Ausführen von git push auf einem lokalen Zweig wird immer der entsprechende Remote-Zweig eingerichtet.
  • core.pager delta: Verwendet delta, um die Ausgabe von z.B. git diff anzuzeigen

Schöneres Protokoll mit git oneline

Die Ausgabe von git log kann mit git log — pretty=oneline gekürzt und mit benutzerdefinierter Formatierung noch hübscher gemacht werden, z.B. (source):

git log — graph — pretty=format:'%Cred%h%Creset -%C(gelb)%d%Creset %s %Cgreen(%cr) %C(fett blau)<%an>%Creset' — abbrev-commit

Dies kann über git config — global alias.logline „log –graph …

Ausgabe des Git-Protokolls mit benutzerdefinierter Formatierung

Bereinigen eines Feature-Zweigs mit interaktivem Rebase

Das interaktive Rebase von Git kann verwendet werden, um die Commit-Historie zu bearbeiten, indem Commits zusammengeführt, ihre Nachrichten bearbeitet oder einige von ihnen gelöscht werden. Dies ist praktisch, wenn z.B. ein Feature-Zweig vor dem Zusammenführen bereinigt wird. git rebase -i öffnet eine Liste von Commits in einem Editor, in dem Sie den Standardbefehl „pick“ auf einen beliebigen Befehl ändern können. Eine detaillierte Beschreibung finden Sie hier.

Auf der Jagd nach Fehlern mit git bisect

Stellen Sie sich folgendes Szenario vor: Ihr Code funktioniert nicht ordnungsgemäß, aber Sie können nicht herausfinden, was falsch ist. Du weißt nur, dass vor einer Woche alles gut gelaufen ist.

Git bisect kann Ihnen dabei helfen, den genauen Commit zu bestimmen, in dem ein Fehler aufgetreten ist. Du führst git bisect start aus, markierst die guten und schlechten Commits (mit git bisect good / git bisect bad <hash>). Git wechselt automatisch zum Commit in der Mitte. Sie können es als gut oder schlecht markieren und dann wechselt git erneut zu commit in der Mitte zwischen dem guten und dem schlechten Commit und wiederholt diesen Vorgang, bis der schuldige Commit gefunden wurde.

Beginnend mit einem schlechten (Schritt 1) und guten (Schritt 2) Commit springt git bisect zu den Commits dazwischen (Schritt 3 und 4), um den Commit einzugrenzen, bei dem ein Fehler aufgetreten ist (Schritt 5).
Beginnend mit einem schlechten (Schritt 1) und guten (Schritt 2) Commit springt git bisect zu den Commits dazwischen (Schritt 3 und 4), um den Commit einzugrenzen, bei dem ein Fehler aufgetreten ist (Schritt 5).

Verlorene Sachen mit git reflog finden

Haben Sie versehentlich einen Branch gelöscht oder einen Commit verloren? Keine Sorge, diese sind noch in git! Sie können git reflog verwenden, um eine Liste früherer Commits/Branches abzurufen, auf denen Sie sich befanden, und den Hash des gelöschten Objekts zu finden (und dann git checkout zu verwenden, um es wiederherzustellen):

git reflog

Mit git worktree zu einem anderen Zweig wechseln

Nehmen wir an, Sie arbeiten an einer Funktion und haben viele bearbeitete oder neue Dateien. Plötzlich müssen Sie einen Commit auf dem Hauptzweig korrigieren. In der Regel führen Sie entweder einen Commit für Ihre Änderungen aus und wechseln zum Hauptrepository oder erstellen an einem anderen Ort eine weitere Kopie des gesamten Repositorys, um einen sauberen Zustand zu erhalten.

Mit git worktree können Sie einen weiteren Arbeitsbaum erstellen, z. B. „eine Kopie des Repositorys in Ihrem Repository“, den Sie löschen können, nachdem Sie Änderungen vorgenommen haben:

git worktree add ./fix-critical-bug main
# go to the fix-critical-bug directory, commit and push solution on the main branch
git worktree remove ./fix-critical-bug
# return to working on your feature

Fazit

Zusammenfassend lässt sich sagen, dass Sie durch die Integration dieser modernen Entwickler-Hacks und fortschrittlichen Git-Befehle in Ihren Workflow Ihre Produktivität steigern und sich auf die Entwicklung von Software konzentrieren können, die einen echten Geschäftswert schafft.

Mehr zu den Gits: Git, GitHub und GitLab und zu einem Architektur-Tool: Swark: Automatische Architekturdiagramme aus Code

com

Newsletter Anmeldung

Bleiben Sie informiert! Wir informieren Sie über alle neuen Beiträge (max. 1 Mail pro Woche – versprochen)