Tools

Git - Kurzeinführung

Kurzübersicht der Befehle der Versionsverwaltung Git
(Es wird dabei von einem lokalen Repositoy und einem entfernten Repository ausgegangen)
Git arbeitet mit drei Stufen:

  • Arbeitsverzeichnis/-kopie (Working directory); hier werden die Dateien vom Entwickler bearbeitet
  • Index (Stage); hier wird sich der Zustand einer Datei gemerkt, in welchem der commit erfolgt
  • Repository; Die „Datenbank“ der Versionsverwaltung

git add macht die Dateien dem Index bekannt, git commit überführt die Dateien, welche im Index sind, ins Repository und setzt den HEAD auf den letzten commit.
Achtung! Wenn eine Datei nach einem add noch verändert wurde und dann ein commit durchgeführt wird, so landet die Datei in dem Zustand im Repository, in welchem dass add durchgeführt wurde, also nicht(!) im Neusten!


Ein lokales Repository erstellen (in einem beliebigen, auch leerem, Verzeichnis):

git init


Ein entferntes Repository clonen (lokale Kopie erzeugen):

git clone benutzername@host:<Absoluter Pfad zum Repository>


Einen Branch ausschecken (dabei werden Änderungen, welche noch nicht committed wurden, verworfen):

git checkout <branch>


Lokale Änderungen verwerfen, welche bereits committed wurden:

git reset --hard <origin/branch>


Dateien einem lokalen Repository (genauer Index) bekanntmachen:

git add <Dateiname>

oder für alle Dateien:

git add .

Genauere Liste der Änderungen anzeigen und Möglichkeit der Auswahl,
welche Änderungen in die staged-area zum Commit übernommen werden sollen
und Anzeige einer Befehlsliste für das weitere Vorgehen (auch beenden ohne zu add-en)

git add -i


Dateien dem lokalen Repository hinzufügen:

git commit -m "<Beschreibung des commit>"


Hat man bei einem commit eine Datei vergessen, so kann man diese dem commit nachträglich hinzufügen:

git commit -m 'Mein commit bei dem eine Datei fehlt'
git add <fehlende Datei>
git commit --amend


Ein Update durchführen (entspricht einem git fetch mit anschließendem git merge):

git pull <remote> <branch>


Übertragen der lokalen Änderungen in das entfernte Repository:

git push <remote> <branch>


Die lokalen Änderungen einer Datei rückgängig machen:

git checkout -- <file>


Alle lokalen Änderungen rückgängig machen:

git checkout -- .


Zurücksetzen von HEAD auf einen älteren Branch (somit ist dieser dann aktuell):

git reset --hard <hash>


Alle Branches auflisten (aktueller Branch ist mit einem Sternchen versehen):

git branch


Änderungen anzeigen (staged, unstaged, untracked):
(siehe auch ⇒ git add -i)

git status


Auch Git erlaubt das taggen:
(Der Hash lässt sich übrigens mit dem log-Befehl ermitteln)

git tag 1.0.00 <hash>


Das Git eigenen Log kann natürlich auch eingesehen werden:

git log


Das Log lässt sich auch grafisch aufbereiten:

gitk


Aktuelle Dateiversion mit letzer Version vergleichen:

git log -p [--follow] [-1] myFile

Git konfigurieren

Dafür sorgen, dass sich die bereits gemergten Teile gemerkt werden:
(reuse recorded resolution)

git config --add rerere.enabled true 


Die eigene Identität festlegen (global):

$ git config --global user.name "Peter Mayer"
$ git config --global user.email peter.mayer@example.com


Ein Diff-Tool (hier: vimdiff) festlegen (global):

$ git config --global merge.tool vimdiff


Beispielhafter Workflow mit zwei Entwicklern

Nennen wir die beiden A-User und B-User.
Diese arbeiten auf einem gemeinsamen Branch namens develop.
A-User macht Änderungen an einer Datei und commited diese. B-User macht ebenfalls Änderungen, aber an einer anderen Datei. B-User commited und pushed. A-User möchte nun commiten, der Versuch wird aber rejected, obwohl B-User an anderen Dateien gearbeitet hat. Daher muss A-User erst mit einem

git fetch origin

sein Repository auf den neusten Stand bringen. Anschließend führt er einen Merge mit

git merge origin/develop

durch. Nun kann A-User seine Änderungen

git push

ins remote Repository übertragen,.


Eigene Werkzeuge
Werkzeuge

gratis Counter by GOWEB
seit 9.10.2007