de/basic.txt heading fixes.
[gitmagic.git] / de / basic.txt
blobd0d49ad039f134e3e62bc46e27b6de7cb622291b
1 == Grundlegendes ==
4 Bevor wir uns in ein Meer von Git-Befehlen stürzen, schauen wir uns ein paar einfache Beispiele
5 an. Obwohl "einfach", sind alle davon wichtig und nützlich.
6 Um erhlich zu sein, meine ersten Monate mit Git brauchte ich nicht mehr als in diesem Kapitel beschrieben steht.
8 === Abspeichern ===
10 Hast du irgendetwas dramatisches vor? 
11 Nur zu, aber speichere deinen aktuellen Stand lieber nochmal ab:
13  $ git init
14  $ git add .
15  $ git commit -m "Mein erstes Backup"
17 Falls deine Änderungen etwas kaput gemacht haben, kannst du jetzt die alte Version wiederherstellen:
19  $ git reset --hard
21 Falls alles geklappt hat, kannst du den neuen Stand speichern:
23  $ git commit -a -m "Noch ein Backup"
25 === Hinzufügen, Löschen, Verschieben  ===
27 Bisher kümmert sich git nur um Dateien die existierten als du das erste mal git add ausgeführt hast.
28 Für neue Dateien oder Verzeichnisse musst du git noch folgendes mitteilen:
30  $ git add NEUE_DATEIEN...
32 Falls git eine Datei "Vergessen" soll:
34  $ git rm ALTE_DATEI...
36 Eine Datei umzubenennen bedeutet im Endeffekt dasselbe wie sie zu löschen und unter neuem Namen hinzuzufügen. Git benutzt hierzu mv (selber syntax wie mv (1) 
38  $ git mv ALTER_NAME NEUER_NAME
40 === Fortgeschrittenes Rückgängigmachen/Wiederherstellen ===
42 Es kann vorkommen das du jede Änderung ab einem bestimmten Zeitpunkt wegwerfen willst weil alles bockmist ist:
44  $ git log
46 Zeight dir eine Liste der letzten Commits und die zugehörigen SHA1 hashes. Jetzt:
48  $ git reset --hard SHA1_HASH
50 um den Stand des betreffenden Commits wieder herzustellen und alle nachfolgenden Änderungen für immer zu Verwerfen.
52 Ein anderes mal willst du nur kurz zu einem alten Stand springen, in diesem Fall:
54  $ git checkout SHA1_HASH
56 Damit springst du in der Zeit zurück, erhältst aber neuere Änderungen. Aber, wie in jedem guten Sciencefiction Film: Wenn du jetzt etwas änderst, gelangst du in ein alternatives Universum. Wenn du dich das zweite mal anders als das erste Verhälst, änderst du nicht die Zukunft, du wechselst in eine paralele Realität
58 Diese Alternative Realität heist "Branch". Wir kommen später darauf zurück, aber merke dir schonmal den Namen.
60  $ git checkout master
62 Bringt dich wieder in die Gegenwart.
63 Btw: Um zu verhidnern das sich Git geschwert, solltest du änderungen vor jedem Checkout immer commiten oder  reseten.
65 Um uns wieder der Computerspiel-analogie zuzuwenden:
67 - *`git reset --hard`*: Ein alten Stand laden und alle neueren Stände wegwerfen.
69 - *`git checkout`*: Einen alten Spielstand laden. Wenn du hier weiterspielst, weichst du von der bisherigen Realität ab und kommst in ein paraleluniversum (branch, reden wir später drüber) 
71 Du kannst auch nur einzelne Dateien oder Verzeichnisse wiederherstellen indem du sie an den Befehl anhängst:
73  $ git checkout SHA1_HASH eine.datei nocheine.datei
75 Aber sein Vorsichtig! diese art des Checkouts kann dateien überschreiben ohne das du etwas merkst.
76 Um Unfälle zu vermeiden solltest du immer commiten befor du ein Checkout machst. 
77 Allgemein gilt: Im zweifel erst commiten, besonders am Anfang wenn du Git noch nicht so genau kennst.
79 Keine lust immer Hashes einzutippen? Nutze:
81  $ git checkout :/"Mein erster Co"
83 um zu einem Commit zu springen dessen nachricht so anfängt
84 Du kannst auch nach dem 5. letzten Commit fragen: 
86  $ git checkout master~5
88 === Rückgängig machen ===
90 Du kannst einzelne Commits wieder rückgängig machen:
92  $ git commit -a
93  $ git revert SHA1_HASH
95 macht nur den angebenen commit wieder rückgängig. Die revert operation wird als neuer Commit gespeichert, wie
96 dir ein Blick in git log verät.
98 === Changelog Erstellen ===
100 Einige Projekte benötigen ein http://de.wikipedia.org/wiki/Changelog[changelog]:
102  $ git log > ChangeLog
104 === Dateien Downloaden ===
106 Besorge dir eine Kopie eines mit Git verwalteten Projektes:
108  $ git clone git://server/pfad/zur/datei
110 um zum Beispiel alle Dateien für dieses Buch zu bekommen:
112  $ git clone git://git.or.cz/gitmagic.git
114 Wir reden später noch ausführlicher über den clone befehl
116 === Das Neueste vom Neuen ===
118 Wenn du schon eine Kopie eines Projektes hast, und dieses auf die letzte Version updaten möchtest:
120  $ git pull
122 === Unverzügliches Veröffentlichen ===
124 Nehmen wir an du hast ein Script geschrieben und möchtest es anderen zugänglich machen. Du könntest sie einfach bitten es immer von deinem Computer herunterzuladen, aber falls sie das tun während du experimentierst oder das Script verbessert könnten sie eine fehlerhafte Version bekommen. Genau deswegen gibt es Releasezyklen. Entwickler arbeiten regelmäßig an einem Projekt, veröffentlichen den Code 
125 aber nur wenn sie ihn für vorzeigbar halten.
126 Um dies in Git zu tun, gehe ins Verzeichniss in dem das script liegt:
128  $ git init
129  $ git add .
130  $ git commit -m "Erster Release"
132 Dann sage deinen Nutzern:
134  $ git clone dein.computer:/pfad/zum/script
136 um dein Script zu Downloaden. Das Funtioniert nur wenn sie SSH-Zugriff haben, falls nicht, führe *git deamon* aus und 
137 sage den nutzern folgendes:
139  $ git clone git://dein.computer/pfad/zum/script
141 Immer wenn dein Script reif für eine Veröffentlichung ist:
143  $ git commit -a -m "Nächstes release"
145 und deine Nutzer können ihr script updaten mit:
147  $ git pull
149 Sie werden nie mit Versionen in kontakt kommen von den du es nicht willst. Natürlich funktioniert der Trick für fast alles, nicht nur Scripts
151 === Was habe ich getan? ===
153 Finde heraus was du seit dem letzten Commit getan hast:
155  $ git diff
157 Oder seit Gestern:
159  $ git diff "@{yesterday}"
161 Oder zwischen einer bestimmten Version und der 2. Letzten Version:
163  $ git diff SHA1_HASH "master~2"
165 Jedesmal ist die Ausgabe ein Patch der mit *git apply* eingespielt werden kann
166 Auch gut:
168  $ git whatchanged --since="2 weeks ago"
170 Um mir die Geschichte eines Repositories anzuzeigen benutze ich häufig
171 http://sourceforge.net/projects/qgit[qgit]
172 da es ein schickes Interface hat. Es git aber auch andere GUIs wie zum Beispiel
173 http://jonas.nitro.dk/tig/[tig], ein textinterface, welches sich gut über das INternet beutzen lässt.
174 Du kannst auch mit *git instaweb* einen Server aufsetzen und die alles in deinem Browser anschauen
176 === Beispiel ===
178 A, B, C, D sind 4 aufeinanderfolgende Commits. B ist identisch mit A außer das einige Dateien gelöscht wurden. Wir mochten die Dateien in D wieder hinzufügen, aber nicht in B.
179 wie mache wir das?
181 Es gibt mindestens 3 Lösungen.
183 Wir sind bei D:
185   1. Der Unterschied zwischen A und B sind die gelöschten Dateien. Wir können einen Patch erstellen der diesen Unterschied darstellt, und diesen dann auf D anwenden:
187    $ git diff B A | git apply
189   2. Da die dateien im Repositorie unter dem Commit A gespeichert sind, können wir sie wieder herstellen:
191    $ git checkout A DATEIEN...
193   3. Wir können den commit B einfach rückgängig machen:
195    $ git revert B
197 Welche ist die beste Lösung? Die die Dir am besten gefällt. 
198 Es ist einfach mit git das zu bekommen was du willst. und oft führen mehre Wege nach Rom.