59 Punkte von GN⁺ 2024-02-17 | 4 Kommentare | Auf WhatsApp teilen
  • pull.ff only oder pull.rebase true

    • Beide Einstellungen sollen verhindern, dass beim Ausführen von git pull versehentlich ein Merge-Commit erzeugt wird, wenn der Branch vom Upstream-Branch abweicht.
    • pull.rebase true entspricht dem Ausführen von git pull --rebase jedes Mal.
    • pull.ff only entspricht dem Ausführen von git pull --ff-only jedes Mal.
    • Beide Einstellungen gleichzeitig zu verwenden ergibt keinen Sinn, da --ff-only --rebase überschreibt.
  • merge.conflictstyle zdiff3

    • Eine Einstellung, die Merge-Konflikte leichter lesbar macht.
    • diff3 ändert die Art, wie Merge-Konflikte in der Standardkonfiguration angezeigt werden, indem der ursprüngliche Code in der Mitte eingeblendet wird.
    • zdiff3 ist eine verbesserte Version von diff3 und gilt als die bessere Wahl.
  • rebase.autosquash true

    • Eine Funktion, die es einfacher macht, ältere Commits zu korrigieren.
    • Wenn man mit git commit --fixup OLD_COMMIT_ID committet, wird beim Ausführen von git rebase --autosquash main der fixup!-Commit automatisch mit dem Ziel-Commit zusammengeführt.
  • rebase.autostash true

    • Führt vor und nach git rebase automatisch git stash und git stash pop aus.
  • push.default simple, push.default current

    • Konfiguriert Git so, dass der aktuelle Branch automatisch auf einen Remote-Branch mit demselben Namen gepusht wird.
    • push.default simple ist die Standardeinstellung und funktioniert nur, wenn der Branch bereits einen Remote-Branch trackt.
    • push.default current pusht den lokalen Branch immer auf einen Remote-Branch mit demselben Namen.
  • init.defaultBranch main

    • Erzeugt beim Anlegen eines neuen Repositorys statt master den Branch main.
  • commit.verbose true

    • Fügt im Texteditor zum Schreiben der Commit-Nachricht den vollständigen Commit-Diff ein, damit man sich besser an die Änderungen erinnert.
  • rerere.enabled true

    • Merkt sich während git rebase, wie Merge-Konflikte gelöst wurden, und behebt sie automatisch erneut.
  • help.autocorrect 10

    • Die Autokorrektur von git prüft Tippfehler, führt den korrigierten Befehl aber nicht automatisch aus.
    • Um ihn automatisch ausführen zu lassen, setzt man help.autocorrect auf 1, 10, immediate oder prompt.
  • core.pager delta

    • Der „Pager“, der zur Anzeige der Ausgabe von git diff, git log, git show usw. verwendet wird.
    • Setzt delta als erweitertes Diff-Anzeige-Tool mit Syntax-Highlighting.
  • diff.algorithm histogram

    • Der Standard-Diff-Algorithmus verursacht oft Probleme, wenn sich die Reihenfolge von Funktionen ändert.
    • diff.algorithm histogram stellt das klarer dar.
  • core.excludesfile: globale .gitignore

    • Konfiguriert eine globale .gitignore-Datei, die auf alle Repositorys angewendet wird.
  • includeIf: getrennte Git-Konfigurationen für privat und beruflich

    • Wird verwendet, um unterschiedliche E-Mail-Adressen für private und berufliche Repositorys zu konfigurieren.
  • url."git@github.com:".insteadOf 'https://github.com/'

  • fsckobjects: Schutz vor Datenbeschädigung

    • Eine Einstellung, die Datenbeschädigungen aktiv erkennt und das Team schon einige Male gerettet hat.
  • Einstellungen rund um Submodule

    • status.submoduleSummary true
    • diff.submodule log
    • submodule.recurse true
  • Weitere Einstellungen

    • blame.ignoreRevsFile .git-blame-ignore-revs
    • branch.sort -committerdate
    • color.ui false
    • commit.cleanup scissors
    • core.autocrlf false
    • core.editor emacs
    • credential.helper osxkeychain
    • diff.tool difftastic
    • diff.colorMoved default
    • diff.colorMovedWS allow-indentation-change
    • diff.context 10
    • fetch.prune true und fetch.prunetags
    • gpg.format ssh
    • log.date iso
    • merge.keepbackup false
    • merge.tool meld
    • push.followtags true
    • rebase.missingCommitsCheck error
    • rebase.updateRefs true
  • So konfiguriert man sie

    • In der Regel setzt man sie mit git config --global NAME VALUE.
    • Um eine Option zu entfernen, bearbeitet man ~/.gitconfig manuell.
  • Einstellungen, die nach dem Schreiben dieses Artikels geändert wurden

    • diff.algorithm histogram
    • branch.sort -committerdate
    • merge.conflictstyle zdiff3
  • Fazit

    • Es ist nützlich, viele Leute nach ihren bevorzugten Einstellungen zu fragen und die am häufigsten genannten aufzulisten.

Meinung von GN⁺

  • Das Wichtigste an diesem Artikel ist, dass man die von Entwicklern häufig verwendeten Git-Konfigurationsoptionen kennenlernen kann.
  • Für Einsteiger unter den Softwareentwicklern, die Git verwenden, können diese Einstellungen helfen, die Arbeitseffizienz zu steigern und alltägliche Probleme zu lösen.
  • Besonders Einstellungen wie merge.conflictstyle zdiff3 oder rebase.autosquash true können das Lösen von Merge-Konflikten und die Verwaltung der Commit-Historie erleichtern und so Probleme in der Zusammenarbeit verringern.

4 Kommentare

 
pril1 2024-02-23

Zum Löschen einer Option kann man auch den Befehl git config --global --unset NAME verwenden.

 
rumbarum 2024-02-21

Wenn Sie Ihre Einstellungen überprüfen möchten, fügen Sie git config --list hinzu.

 
pmc7777 2024-02-18

Ich habe schon erlebt, dass ich es in meiner Haupt-Entwicklungsumgebung eingerichtet hatte, in einer anderen Umgebung aber nicht, und mich dann gefragt habe, warum es nicht funktioniert … haha. Da Entwickler Git täglich nutzen, wäre es schön, wenn das Interesse an Git-Konfigurationen und allem, was damit zusammenhängt, noch größer würde.

 
GN⁺ 2024-02-17
Hacker-News-Kommentare
  • Einstellungen für core.autocrlf und safecrlf
    • Verhindern Commits von CRLF-Dateien und erzwingen die Umwandlung in LF
    • Können bei Bedarf mit gitattributes überschrieben werden
  • alias-Konfiguration in .gitconfig
    • Ein Alias einrichten, der die Commit-Historie als kompakten Graphen ausgibt
    • Konfiguration aus einem Stack-Overflow-Beitrag übernommen
  • rebase.autosquash und der Alias fixup
    • Häufig verwendete Einstellungen zur Automatisierung von Rebase nach Commits
    • pull.rebase ist ebenfalls wichtig, aber fixup wird noch häufiger verwendet
  • Die Nützlichkeit der Einstellung insteadOf
    • Kürzel verwenden, wenn GitHub-Remotes hinzugefügt werden
    • Verschiedene Einstellungen wie advice.statusHints, include.path, remote "origin".fetch, interactive.singleKey usw. werden erwähnt
  • Beispiel einer persönlichen .gitconfig-Konfiguration
    • Enthält verschiedene Einstellungen für alias, tag, tar, log, pull, diff, difftool, pager, safe, advice, init
  • Konfiguration für die Verwendung von delta als Pager
    • Zeigt besser lesbare und syntaxhervorgehobene Diffs an
    • Fügt einen Alias hinzu, um den Default-Branch auszuchecken
  • Einstellung user.useConfigOnly für die Nutzung mehrerer E-Mail-Adressen
    • user.email auskommentieren und beim Commit in neuen Repositories die E-Mail setzen
  • Notwendigkeit, den Default-Wert von merge.conflictstyle zu ändern
    • Der Stil diff3 liefert mehr Informationen zur Konfliktlösung
  • Weitere Einstellungen
    • core.commentChar, alias.newtask, alias.zip, git checkout -, format.pretty, delta-Konfiguration
  • Missverständnisse rund um die Einstellung branch.sort
    • Sortiert tatsächlich nach Commit-Datum, nicht nach den zuletzt verwendeten Branches
  • Noch ein Beispiel für eine persönliche .gitconfig-Konfiguration
    • Einstellungen für alias.lg, alias.hist, alias.quick-push, alias.search, user, core, url
    • Mit dem Alias quick-push lässt sich ein einfacher Workflow definieren

Der obige Inhalt ist eine Zusammenfassung persönlicher .gitconfig-Einstellungen und bevorzugter Git-Konfigurationstipps, die Nutzer in Hacker-News-Kommentaren geteilt haben. Der Fokus der Einstellungen liegt darauf, die Effizienz bei der Nutzung von Git zu erhöhen, bestimmte Aufgaben zu automatisieren und die User Experience zu verbessern.