Git-Installation und -Konfiguration

Installation

Für iX-Distributionen sollte Git im Standard-Repository vorhanden sein.

  • Für Debian/Ubuntu:

    $ sudo apt install git-all
    

    Mit der Bash-Autovervollständigung lässt sich Git auf der Kommandozeile einfacher bedienen:

    $ sudo apt install bash-completion
    
  • Für macOS:

    Es gibt verschiedene Möglichkeiten, Git auf einem Mac zu installieren. Am einfachsten ist es vermutlich, die Xcode Command Line Tools zu installieren. Hierfür müsst ihr nur git das erste Mal vom Terminal aufrufen:

    $ git --version
    

    git-completion könnt ihr mit Homebrew installieren:

    Anschließend müsst ihr folgende Zeile in ~/.bash_profile hinzufügen:

    [[ -r "$(brew --prefix)/etc/profile.d/bash_completion.sh" ]] && . "$(brew --prefix)/etc/profile.d/bash_completion.sh"
    
  • Für Windows:

    Ihr könnt einfach https://git-scm.com/download/win aufrufen um den Download automatisch zu starten. Weitere Informationen findet ihr unter https://gitforwindows.org/.

Konfiguration

$ git config --global user.name "[name]"

legt den Namen fest, den mit euren Commit-Transaktionen verknüpft wird.

$ git config --global user.email "[email address]"

legt die E-Mail fest, die mit euren Commit-Transaktionen verknüpft wird.

$ git config --global color.ui auto

aktiviert die Kolorierung der Befehlszeilenausgabe.

Die ~/.gitconfig-Datei

Mit den oben angegebenen Befehle kann z.B. folgende Datei erstellt werden:

[user]
    name = veit
    email = veit@cusy.io

[color]
    diff = auto
    status = auto
    branch = auto

In der ~/.gitconfig-Datei können jedoch auch Aliase festgelegt werden:

[alias]
    st = status
    ci = commit
    br = branch
    co = checkout
    df = diff
    dfs = diff --staged

Auch der Editor lässt sich angeben und die Hervorhebung von Leerzeichenfehlern in git diff:

[core]

    editor = vim

    # Highlight whitespace errors in git diff:
    whitespace = tabwidth=4,tab-in-indent,cr-at-eol,trailing-space

Anmeldedaten verwalten

Seit der Git-Version 1.7.9 lassen sich die Zugangsdaten zu git-Repositories mit gitcredentials verwalten. Um diese zu nutzen, könnt ihr z.B. folgendes angeben:

$ git config --global credential.helper Cache

Hiermit wird ihr Passwort für 15 Minuten im Cache-Speicher gehalten. Der Timeout kann ggf. erhöht werden, z.B. mit:

$ git config credential.helper 'cache --timeout=3600'

macOS

Unter macOS lässt sich mit osxkeychain die Schlüsselbundverwaltung (Keychain) nutzen um die Zugangsdaten zu speichern. osxkeychain setzt Git in der Version 1.7.10 oder neuer voraus und kann im selben Verzeichnis wie Git installiert werden mit:

$ git credential-osxkeychain
git: 'credential-osxkeychain' is not a git command. See 'git --help'.
$ curl -s -O http://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkeychain
$ chmod u+x git-credential-osxkeychain
$ sudo mv git-credential-osxkeychain /usr/bin/
Password:
git config --global credential.helper osxkeychain

Dies trägt folgendes in die ~/.gitconfig ein:

[credential]
    helper = osxkeychain

Windows

Für Windows steht Git Credential Manager for Windows zur Verfügung. Für das Programm muss der Installer heruntergeladen werden. Nach dem Doppelklick führt er Euch durch die weitere Installation. Als Terminal-Emulator für Git Bash solltet ihr das Standardkonsolenfenster von Windows auswählen.

Bemerkung

Ein umfangreiches Beispiel einer ~/.gitconfig-Datei findet ihr in meinem dotfiles-Repository: .gitconfig.

Die .gitignore-Datei

In der .gitignore-Datei eines Repository könnt ihr Dateien von der Versionsverwaltung ausschließen. Eine typische .gitignore-Datei kann z.B. so aussehen:

/logs/*
!logs/.gitkeep
/tmp
*.swp

Git-commit leerer Ordner

In obigem Beispiel seht ihr, dass mit /logs/* keine Inhalte des logs-Verzeichnis mit Git versioniert werden soll, in der Folgezeile jedoch eine Ausnahme definiert wird: !logs/.gitkeep erlaubt, dass die Datei .gitkeep mit Git verwaltet werden darf. Damit wird dann auch das logs-Verzeichnis in das Git-Repository übernommen. Diese Hilfskonstruktion ist erforderlich, da leere Ordner nicht mit Git verwaltet werden können.

Eine andere Möglichkeit besteht darin, in einem leeren Ordner eine .gitignore-Datei mit folgendem Inahlt zu erstellen:

# ignore everything except .gitignore
*
!.gitignore

excludesfile

Ih könnt jedoch auch zentral für alle Git-Repositories Dateien ausschließen. Hierfür wird üblicherweise in der ~/.gitconfig-Datei folgendes angegeben:

[core]

    # Use custom `.gitignore`
    excludesfile = ~/.gitignore
    

Bemerkung

Hilfreiche Vorlagen findet ihr in meinem dotfiles-Repository oder auf der Website gitignore.io.