Git Befehle, die man täglich benötigt
Hier habe ich eine kurze Anleitung zusammengestellt, die als erste Schritte mit dem verteilten Versionsverwaltungssystem Git verwendet werden können. Aller Einstieg ist schwer, deshalb habe ich mich hier auf das absolut wichtigste beschränkt.
Anwendungen
Ziel ist immer die Versionierung zu verwenden, wodurch auch der Verlauf der Änderungen sichtbar wird. Hier eine Liste von populären Einsatzbereichen:
- Quellcode-Verwaltung (z.B. für Webprojekte)
- Konfigurationsverwaltung
- als Backup-Lösung
- als Dateiablage
Abfolge der Befehle
In dem Schaubild wird aufgezeigt, in welcher Reihenfolge die Befehle angewendet werden:
GIT Einstellungen setzen
Repositoriy übergreifende Konfiguration setzt man mit folgenden Anweisungen:
# Name und Email setzen
git config --global user.name "Vorname Nachname"
git config --global user.email "ich@meinedomain.de"
# Farben bei der Ausgabe verwenden
git config --global color.branch auto
git config --global color.diff auto
git config --global color.interactive auto
git config --global color.status auto
# BBedit als Editor setzen (Mac OS X)
git config --global core.editor "bbedit -w"
# Textmate als Editor setzen (Mac OS X)
git config --global core.editor "mate -w"
Repository anlegen
Um ein neues Repository anzulegen, wechselt man in das Verzeichnis, welches als Basis des Repositories dienen soll:
mkdir meinprojekt
cd meinprojekt
git init
Natürlich kann auch ein schon vorhandenes Verzeichnis verwendet werden.
Checkout
git clone git_server:mein_repository
Ein Repository kann nur komplett verwendet werden (also nicht nur ein Teilbereich daraus; z.B. mit SVN war es möglich mit einem bestimmten Verzeichnis aus einem Repository zu arbeiten)
Falls das Projekt vorher schon mit SVN verwaltet wurde, wird das SVN Repository mit folgenden Befehl nach GIT migriert:
git-svn clone https://mein-svn-server.de/meinprojekt
Arbeiten mit Dateien und Verzeichnissen
Hat man eine Datei innerhalb eines Repositories geändert oder neu hinzugefügt (beides erfordert die gleiche Weiterführung) und will die Änderungen in das Repository aufnehmen, geht das wie folgt:
git add meine_datei.txt
git commit -m 'Kommentar, was ich geändert habe' meine_datei.txt
git push
Mit dem ersten Befehl zeigt man an, dass diese Datei beim nachfolgenden Commit berücksichtigt werden soll. die folgende Zeile für den eigentlichen Commit aus, was bedeutet, dass die Änderung der Datei im Repository aufgenommen wird. Der 3. Befehl ist nur dann erforderlich, wenn man die Änderungen des lokalen Repository an ein anderes Repository übertragen will. Dies ist dann der Fall, wenn man z.B. in einem Projekt als Team ein gemeinsames Repository nutzt.
Eine Datei entfernen
git rm meine_datei.txt
git commit -m 'meine_datei.txt habe ich entfernt, weil sie nicht mehr gebraucht wird.' meine_datei.txt
git push # nur erforderlich, wenn das lokale Repository auf ein externes Repository übertragen werden soll.
Eine Datei oder Verzeichnis umbenennen
git mv meine_datei.txt neuer_name.txt
git commit -m 'Datei wurde umbenannt'
git push # nur erforderlich, wenn das lokale Repository auf ein externes Repository übertragen werden soll.
Status überprüfen
Will man sehen, ob Dateien oder Verzeichnisse noch nicht commitet wurden, verwendet man folgenden Befehl im Verzeichnis das überprüft werden soll:
git status
Status unterscheidet zwischen staged und unstaged. Staged bedeutet, dass die Dateien schon für den Commit markiert wurden.
Commit Protokoll einsehen
Eine Liste der gemachten Commits:
git log
Updates holen
Will man aus einem externen (z.B. origin) Repository die Änderungen in das lokale Repository übernehmen, erledigt das folgender Befehl:
git pull
“pull” ist das gleiche wie “git fetch” und “git merge”. Für SVN/CVS Umsteiger ist das der Ersatz für “update”, welchen es bei Git nicht gibt. “pull” ist viel mächtiger, da man mit unterschiedlichen Quellen gleichzeitig arbeiten kann.
Arbeiten mit einem Branch
Ein Branch kann verwendet werden, um etwas auszuprobieren. Hier ein kleines Beispiel:
git branch testbranch # einen Branch names testbranch anlegen
git checkout testbranch # wechseln in den Branch names testbranch
touch > testerchen.txt # eine Datei im testbranch anlegen
git add testerchen.txt # Datei fuer commit kennzeichnen
git commit testerchen.txt # die Datei im testbranch commiten
git checkout master # umschalten zurueck in den master
git merge testbranch # Änderungen vom testbranch in den master Branch mergen
Tag setzen
Mit Git lässt sich ein Tag mit folgendem Befehl setzen:
git tag "Name des Tags"
Entfernen kann man einen Tag mit
git tag -d "Name des Tags"
Dateien ignorieren
Will man Dateien oder Verzeichnisse nicht über das Repository führen, legt man eine .gitignore Datei im Hauptverzeichnis des Repositories an (in dem Verzeichnis, in dem sich auch das Verzeichnis .git befindet).
*~
.DS_Store
.settings/
sites/default/dateien/
Dieses Beispiel schließt folgende Dateien aus:
- alle Dateien, die mit ~ enden
- alle Dateien mit dem Namen .DS_Store
- alle Verzeichnisse .settings
- alle Verzeichnisse sites/default/dateien
Jede Zeile stellt also ein Suchmuster dar, die beliebig spezifisch aufgebaut werden können. Ein * kann als Platzhalter für beliebige andere Zeichen eingesetzt werden (außer /).
GIT Installieren:
Git unter Linux Unter Linux ist das Installieren von GIT am einfachsten:
apt-get install git-core
apt-get install git-svn # nur wenn man aus SVN Daten importieren will
Eine empfehlenswerte GUI für Linux ist gitg:
Git unter Mac OS X Git wird als Macport angeboten. Hat man Macports installiert, so nimmt man die GIT Installation mit folgenden Befehl vor:
sudo port install git-core
# wenn SVN Unterstützung benötigt wird:
sudo port install git-core +svn
Wenn man Macports nicht installiert hat, kann man alternativ den git-osx-installer benutzen. Dabei handelt es sich um ein Setup-Programm (wie man es unter Mac OS X kennt), mit dessen Hilfe die Installation durchgeführt wird.
Wer unter Mac OS X ein GUI sucht, der kann GitX verwenden:
Git unter Windows
Um GIT zu installieren, holt man sich die aktuelle Version von msysgit unter: http://msysgit.github.io/ und installiert diese. Wer gerne bevorzugt mit einer GUI arbeitet, dem sei TortoiseGit empfohlen (die Installation von mysgit ist auch für TortoiseGit erforderlich).
GIT Integration in Eclipse
Eine GIT Integration wird über das Plugin EGit angeboten. Um es zu installieren, wählt man den Menüpunkt “Install New Software” aus und fügt eine neue externe Site hinzu:
Name: EGit
Location: http://download.eclipse.org/egit/updates
Nun steht Plugin EGit zur Installation bereit. Hier noch eine Benutzeranleitung zu Egit.
Pimp your bash - Informationen zum Repository in der Shell
Um den GIT Informationen zum aktuellen Verzeichnis im Shell Prompt zu integrieren, fügt man folgenden Code Schnipsel oben in der Datei ~/.bashrc ein:
function git_status {
status=$(git status 2> /dev/null)
status_dirty=$(echo "$status" | tail -n1)
num=$(echo "$status" 2> /dev/null | grep "Your branch is ahead of" | awk '{split($0,a," "); print a[9];}' 2> /dev/null) || return
[[ "$status_dirty" != "nothing to commit (working directory clean)" ]] && echo "*"
if [[ "$num" != "" ]]; then
echo " +$num"
fi
}
function parse_git_branch {
git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/[git::\1$(git_status)]/"
}
Nun setzt man die Funktion parse_git_branch in der Prompt-Definition ein. Der Prompt könnte dann so definiert sein:
PS1='\[\033[01;32m\]\h\[\033[01;34m\] \w \033[01;31m\]$(parse_git_branch)\033[01;34m\]\$\[\033[00m\] '
Diese Zeile muss auch in die .bashrc (auf jeden Fall unterhalb der beiden eingefügten Funktionen!)
Was dann so aussehen würde: (alle Git bezogenen Informationen sind rot in den eckigen Klammern)
Man bekommt nun folgendes angezeigt:
- ob das aktuelle Verzeichnis in Git geführt wird
- den Namen der aktiven Branch
- ob eine Änderung gemacht wurde und diese noch nicht commitet ist (das Sternchen am Ende)
- ob Änderungen commitet sind, diese aber noch nicht gepusht wurden (das +-Zeichen am Ende, gefolgt von der Anzahl der vorhanden Commits)
Weitere Ressourcen:
- Warum Git besser als X ist
- Git Cheat Sheet - besonders für GIT Neulinge sehr empfehlenswert
- git(1) Manual Page
- 8 ways to share your git repository
- Github - Social Coding
Projektmanagement Services, Consulting und Coaching
Unser Projektmanagement Team aus München ist hervorragend ausgebildet und verfügt über die nötige Expertise, Erfahrung und das Augenmaß, wenn es darum geht in Kundenprojekten die richtigen Tools einzuführen und zu konfigurieren und bestehende Prozesse zu optimieren. Kontaktieren Sie uns unverbindlich.