git - der einfache einstieg

eine einfache anleitung um git zu lernen. kein schnick-schnack ;)

Tweet

von Roger Dudler
dank an @tfnico, @fhd und Namics
diese anleitung in english, español, français, italiano, nederlands, português, русский, 日本語, 中文
feedback auf github

installation

git für OSX herunterladen

git für Windows herunterladen

git für Linux herunterladen

neues repository erstellen

erstelle ein neues verzeichnis, öffne es und führe
git init
aus, um ein neues git repository anzulegen.

ein repository auschecken

erstelle eine arbeitskopie, indem du folgenden befehl ausführst
git clone /pfad/zum/repository
falls du ein entferntes repository verwendest, benutze
git clone benutzername@host:/pfad/zum/repository

workflow

dein lokales repository besteht aus drei "instanzen", die von git verwaltet werden. die erste ist deine Arbeitskopie, welche die echten dateien enthält. die zweite ist der Index, welcher als zwischenstufe agiert und zuguterletzt noch der HEAD, der auf deinen letzten commit zeigt.

add & commit

du kannst änderungen vorschlagen (zum Index hinzufügen) mit
git add <dateiname>
git add *
das ist der erste schritt im git workflow. du bestätigst deine änderungen mit
git commit -m "commit nachricht"
jetzt befindet sich die änderung im HEAD, aber noch nicht im entfernten repository.

änderungen hochladen

die änderungen sind jetzt im HEAD deines lokalen repositories. Um die änderungen an dein entferntes repository zu senden, führe
git push origin master
aus. du kannst master auch mit einem beliebigen anderen branch ersetzen. mehr über branches erfährst du später.

wenn du dein lokales repository nicht von einem entfernten geklont hast und du diese aber mit einem anderen repository verbinden möchtest, musst du dieses mit
git remote add origin <server>
hinzufügen. jetzt bist du bereit deine änderungen hochzuladen

branching

Branches werden benutzt um verschiedene funktionen isoliert voneinander zu entwickeln. der master branch ist der "standard" branch wenn du ein neues repository erstellst. du solltest aber für die entwicklung andere branches verwenden und diese dann in den master branch mergen. auch das lernst du später.

erstelle einen neuen branch mit dem namen "feature_x" und wechsle zu diesem
git checkout -b feature_x
zum master zurückwechseln
git checkout master
und den eben erstellten branch wieder löschen
git branch -d feature_x
ein branch ist nicht für andere verfügbar bis du diesen in dein entferntes repository hochlädst
git push origin <branch>

update & merge

um dein lokales repository mit den neuesten änderungen zu aktualisieren, verwende
git pull
in deiner arbeitskopie um die änderungen erst herunterzuladen (fetch) und dann mit deinem stand zusammenzuführen (merge).
wenn du einen anderen branch mit deinem aktuellen (z.B. master) zusammenführen willst, benutze
git merge <branch>
in beiden fällen versucht git die änderungen automatisch zusammenzuführen. Unglücklicherweise ist dies nicht immer möglich und endet in konflikten. du bist verantwortlich diese konflikte durch manuelles editieren der betroffenen dateien zu lösen. bist du damit fertig, musst du das git mit folgendem befehl mitteilen
git add <dateiname>
bevor du änderungen zusammenführst, kannst du dir die differenzen auch anschauen
git diff <quell_branch> <ziel_branch>

tagging

es ist empfohlen für software releases tags zu verwenden. dies ist ein bekanntes konzept, das es schon mit SVN gab. Du kannst ein neues Tag namens 1.0.0 mit folgendem befehl erstellen
git tag 1.0.0 1b2e1d63ff
1b2e1d63ff steht für die ersten 10 zeichen der commit id, die du mit deinem tag referenzieren möchtest. Du erhältst die liste der commit ids mit
git log
du kannst auch weniger zeichen verwenden, es muss einfach eindeutig sein.

änderungen rückgängig machen

falls du mal etwas falsch machst (was natürlich nie passiert ;) kannst du die lokalen änderungen mit
git checkout -- <filename>
auf den letzten stand im HEAD zurücksetzen. änderungen die du bereits zum index hinzugefügt hast, bleiben bestehen.

wenn du aber deine lokalen änderungen komplett entfernen möchtest, holst du dir den letzten stand vom entfernten repository mit folgenden befehlen
git fetch origin
git reset --hard origin/master

nützliche tricks

eingebaute git GUI
gitk
farbige konsolenausgabe
git config color.ui true
eine zeile pro commit in der logausgabe
git config format.pretty oneline
interaktives hinzufügen von änderungen
git add -i

links

graphische clients

anleitungen

kommentare