<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>de/05-distributed-git/01-chapter5.markdown</filename>
    </added>
    <added>
      <filename>de/06-git-tools/01-chapter6.markdown</filename>
    </added>
    <added>
      <filename>de/README</filename>
    </added>
    <added>
      <filename>es-es/01-introduction/01-chapter1.markdown</filename>
    </added>
    <added>
      <filename>es-es/02-git-basics/01-chapter2.markdown</filename>
    </added>
    <added>
      <filename>es-es/03-git-branching/01-chapter3.markdown</filename>
    </added>
    <added>
      <filename>es-es/04-git-server/01-chapter4.markdown</filename>
    </added>
    <added>
      <filename>es-es/05-distributed-git/01-chapter5.markdown</filename>
    </added>
    <added>
      <filename>es-es/06-git-tools/01-chapter6.markdown</filename>
    </added>
    <added>
      <filename>es-es/07-customizing-git/01-chapter7.markdown</filename>
    </added>
    <added>
      <filename>es-es/08-git-and-other-scms/01-chapter8.markdown</filename>
    </added>
    <added>
      <filename>es-es/09-git-internals/01-chapter9.markdown</filename>
    </added>
    <added>
      <filename>es-es/NOTES</filename>
    </added>
    <added>
      <filename>es-es/README</filename>
    </added>
    <added>
      <filename>nl/01-introduction/01-chapter1.markdown</filename>
    </added>
    <added>
      <filename>nl/02-git-basics/01-chapter2.markdown</filename>
    </added>
    <added>
      <filename>nl/03-git-branching/01-chapter3.markdown</filename>
    </added>
    <added>
      <filename>nl/04-git-server/01-chapter4.markdown</filename>
    </added>
    <added>
      <filename>nl/05-distributed-git/01-chapter5.markdown</filename>
    </added>
    <added>
      <filename>nl/06-git-tools/01-chapter6.markdown</filename>
    </added>
    <added>
      <filename>nl/07-customizing-git/01-chapter7.markdown</filename>
    </added>
    <added>
      <filename>nl/08-git-and-other-scms/01-chapter8.markdown</filename>
    </added>
    <added>
      <filename>nl/09-git-internals/01-chapter9.markdown</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -4,7 +4,7 @@
 
 If you can read only one chapter to get going with Git, this is it. This chapter covers every basic command you need to do the vast majority of the things you&#8217;ll eventually spend your time doing with Git. By the end of the chapter, you should be able to configure and initialize a repository, begin and stop tracking files, and stage and commit changes. We&#8217;ll also show you how to set up Git to ignore certain files and file patterns, how to undo mistakes quickly and easily, how to browse the history of your project and view changes between commits, and how to push and pull from remote repositories.
 
-Wenn Du nur ein einziges Kapitel aus diesem Buch lesen willst, um mit Git loszulegen, dann lies dieses hier. Wir werden auf jeden grundlegenden Git Befehl eingehen, den Du f&#252;r den allergr&#246;&#223;ten Teil deiner t&#228;glichen Arbeit mit Git brauchst. Am Ende des Kapitels solltest Du in der Lage sein, ein neues Repository (xxx) anzulegen und zu konfigurieren, damit Dateien zur Versionskontrolle hinzuzuf&#252;gen und wieder aus ihr zu entfernen, &#196;nderungen f&#252;r einen Commit zu markieren und schlie&#223;lich einen Commit durchzuf&#252;hren. Wir werden au&#223;erdem besprechen, wie Du Git so konfigurieren kannst, da&#223; es bestimmte Dateien und Datei Patterns (xxx) zu ignorieren, wie Du Fehler schnell und einfach r&#252;ckg&#228;ngig machen, die Historie deines Projektes durchsuchen und &#196;nderungen zwischen bestimmten Commits nachschlagen, und wie Du in entfernte Repositories herauf- und von dort herunterladen kannst.
+Wenn Du nur ein einziges Kapitel aus diesem Buch lesen willst, um mit Git loslegen zu k&#246;nnen, dann lies dieses hier. Wir werden hier auf diejenigen grundlegenden Git Befehle eingehen, die du f&#252;r den allergr&#246;&#223;ten Teil deiner t&#228;glichen Arbeit mit Git brauchst. Am Ende des Kapitels solltest du in der Lage sein, ein neues Repository anzulegen und zu konfigurieren, Dateien zur Versionskontrolle hinzuzuf&#252;gen und wieder aus ihr zu entfernen, &#196;nderungen in der Staging Area f&#252;r einen Commit vorzumerken und schlie&#223;lich einen Commit durchzuf&#252;hren. Wir werden au&#223;erdem besprechen, wie du Git so konfigurieren kannst, da&#223; es bestimmte Dateien und Dateimuster ignoriert, wie du Fehler schnell und einfach r&#252;ckg&#228;ngig machen, wie du die Historie deines Projektes durchsuchen und &#196;nderungen zwischen bestimmten Commits nachschlagen, und wie du in externe Repositories herauf- und von dort herunterladen kannst.
 
 ## Getting a Git Repository ##
 
@@ -12,7 +12,7 @@ Wenn Du nur ein einziges Kapitel aus diesem Buch lesen willst, um mit Git loszul
 
 You can get a Git project using two main approaches. The first takes an existing project or directory and imports it into Git. The second clones an existing Git repository from another server.
 
-Es gibt grunds&#228;tzlich zwei Wege, ein Git Repository auf dem eigenen Rechner anzulegen. Im ersten Fall nimmt man ein existierendes Projekt oder Verzeichnis und initialisiert es als ein Git Repository. Im zweiten Fall klont man ein existierendes Repository von einem anderen Rechner, der als Server fungiert.
+Es gibt grunds&#228;tzlich zwei M&#246;glichkeiten, ein Git Repository auf dem eigenen Rechner anzulegen. Erstens kann man ein existierendes Projekt oder Verzeichnis als ein neues Git Repository initialisieren. Zweitens kann man ein existierendes Repository von einem anderen Rechner, der als Server fungiert, auf den eigenen Rechner klonen.
 
 ### Initializing a Repository in an Existing Directory ###
 
@@ -20,17 +20,17 @@ Es gibt grunds&#228;tzlich zwei Wege, ein Git Repository auf dem eigenen Rechner anz
 
 If you&#8217;re starting to track an existing project in Git, you need to go to the project&#8217;s directory and type
 
-Wenn Du ein existierendes Projekt auf Deinem Rechner mit Git nachverfolgen willst, kannst Du dazu in das jeweilige Verzeichnis gehen und diesen Befehl ausf&#252;hren:
+Wenn du k&#252;nftige &#196;nderungen an einem bestehenden Projekt auf Deinem Rechner mit Git versionieren und nachverfolgen willst, kannst du dazu einfach in das jeweilige Verzeichnis gehen und diesen Befehl ausf&#252;hren:
 
 	$ git init
 
 This creates a new subdirectory named .git that contains all of your necessary repository files &#8212; a Git repository skeleton. At this point, nothing in your project is tracked yet. (See Chapter 9 for more information about exactly what files are contained in the `.git` directory you just created.)
 
-Dies erzeugt ein Git Verzeichnis .git, in dem alle relevanten Git Repository Dateien enthalten sind - ein Git Repository Grundger&#252;st also. Zu diesem Zeitpunkt werden aber noch keine Dateien nachverfolgt. (In Kapitel 9 werden wir genauer darauf eingehen, welche Dateien im .git Verzeichnis gerade erzeugt wurden.)
+Das erzeugt ein Git Verzeichnis `.git`, in dem alle relevanten Git Repository Dateien enthalten sind, also ein Git Repository Grundger&#252;st. Zu diesem Zeitpunkt werden dann noch keine Dateien versioniert. (In Kapitel 9 werden wir genauer darauf eingehen, welche Dateien im .git Verzeichnis gerade erzeugt wurden.)
 
 If you want to start version-controlling existing files (as opposed to an empty directory), you should probably begin tracking those files and do an initial commit. You can accomplish that with a few git add commands that specify the files you want to track, followed by a commit:
 
-Wenn in deinem Projekt bereits Dateien vorhanden sind (und es sich nicht nur um ein leeres Verzeichnis handelt), willst Du diese vermutlich zur Versionskontrolle hinzuf&#252;gen, damit Du &#196;nderungen daran k&#252;nftig nachverfolgen kannst. Du kannst das mit den folgenden Git Befehlen tun, die Dateien zur Versionskontrolle hinzuf&#252;gen und anschlie&#223;end einen ersten Commit anlegen:
+Wenn in deinem Projekt bereits Dateien vorhanden sind (und es sich nicht nur um ein leeres Verzeichnis handelt), willst du diese vermutlich zur Versionskontrolle hinzuf&#252;gen, damit &#196;nderungen daran k&#252;nftig nachverfolgbar sind. Dazu kannst du die folgenden Git Befehle ausf&#252;hren, die Dateien zur Versionskontrolle hinzuf&#252;gen und anschlie&#223;end einen ersten Commit anlegen:
 
 	$ git add *.c
 	$ git add README
@@ -46,17 +46,17 @@ Wir werden gleich noch einmal genauer auf diese Befehle eingehen. Im Moment ist
 
 If you want to get a copy of an existing Git repository &#8212; for example, a project you&#8217;d like to contribute to &#8212; the command you need is git clone. If you&#8217;re familiar with other VCS systems such as Subversion, you&#8217;ll notice that the command is clone and not checkout. This is an important distinction &#8212; Git receives a copy of nearly all data that the server has. Every version of every file for the history of the project is pulled down when you run `git clone`. In fact, if your server disk gets corrupted, you can use any of the clones on any client to set the server back to the state it was in when it was cloned (you may lose some server-side hooks and such, but all the versioned data would be there&#8212;see Chapter 4 for more details).
 
-Wenn Du eine Kopie eines existierenden Git Repositories anlegen willst - z.B. um an einem existierenden Projekt mitzuarbeiten - dann kannst Du dazu den Befehl `git clone` verwenden. Wenn Du schon mit anderen VCS Sytemen wie Subversion gearbeitet hast, wird dir auffallen, da&#223; der Befehl `clone` hei&#223;t und nicht `checkout`. Dies ist ein wichtiger Unterschied, den Du verstehen solltest. Git holt eine Kopie praktisch aller Daten, die sich in dem Repository befinden, das Du klonst. Mit `git clone` wird jede einzelne Version jeder einzelnen Datei in der Historie des Repositories heruntergeladen. Wenn ein Repository auf einem Server einmal besch&#228;digt wird (z.B. weil die Festplatte besch&#228;digt wird xxx), kann man tats&#228;chlich jeden beliebigen Klon des Repositories verwenden, um das Repository auf dem Server wieder in dem Zustand wieder herzustellen, in dem es sich befand, als es geklont wurde. (Es kann passieren, da&#223; man einige Hooks xxx auf dem Server verliert, aber alle versionierten Daten bleiben erhalten. In Kapitel 4 gehen wir darauf noch einmal genauer ein.)
+Wenn du eine Kopie eines existierenden Git Repositories anlegen willst - z.B. um an einem existierenden Projekt mitzuarbeiten - dann kannst du dazu den Befehl `git clone` verwenden. Wenn du schon mit anderen VCS Sytemen wie Subversion gearbeitet hast, wird dir auffallen, da&#223; der Befehl `clone` hei&#223;t und nicht `checkout`. Dies ist ein wichtiger Unterschied, den du verstehen solltest. Git l&#228;dt eine Kopie praktisch s&#228;mtlicher Daten, die sich in dem geklonten Repository befinden, auf deinen Rechner. Mit `git clone` wird jede einzelne Version jeder einzelnen Datei in der Historie des Repositories heruntergeladen. Wenn ein Repository auf einem Server einmal besch&#228;digt wird (z.B. weil die Festplatte besch&#228;digt wird), kann man tats&#228;chlich jeden beliebigen Klon des Repositories verwenden, um das Repository auf dem Server wieder in dem Zustand wieder herzustellen, in dem es sich befand, als es geklont wurde. (Es kann passieren, da&#223; man einige Hooks (xxx) auf dem Server verliert, aber alle versionierten Daten bleiben erhalten. In Kapitel 4 gehen wir darauf noch einmal genauer ein.)
 
 You clone a repository with `git clone [url]`. For example, if you want to clone the Ruby Git library called Grit, you can do so like this:
 
-Du kannst ein Repository mit dem Befehl `git clone [url]` klonen. Um beispielsweise das Repository der Ruby Git Bibliothek Grit zu klonen, f&#252;hrst Du den folgenden Befehl aus:
+Du kannst ein Repository mit dem Befehl `git clone [url]` klonen. Um beispielsweise das Repository der Ruby Git Bibliothek Grit zu klonen, f&#252;hrst du den folgenden Befehl aus:
 
 	$ git clone git://github.com/schacon/grit.git
 
 That creates a directory named &quot;grit&quot;, initializes a `.git` directory inside it, pulls down all the data for that repository, and checks out a working copy of the latest version. If you go into the new `grit` directory, you&#8217;ll see the project files in there, ready to be worked on or used. If you want to clone the repository into a directory named something other than grit, you can specify that as the next command-line option:
 
-Das erzeugt ein Verzeichnis `grit`, initialisiert ein `.git` Verzeichnis darin, l&#228;dt alle Daten f&#252;r das Repository herunter, und checkt (xxx) eine Arbeitskopie der letzten Version aus. Wenn Du in das neue `grit` Verzeichnis gehst, siehst Du die in diesem Projekt enthaltenen Dateien und kannst sie benutzen oder bearbeiten. Wenn Du das Repository in ein Verzeichnis mit einem anderen Namen als `grit` klonen willst, kannst Du das wie folgt angeben:
+Git legt dann ein Verzeichnis `grit` an, initialisiert ein `.git` Verzeichnis darin, l&#228;dt alle Daten f&#252;r das Repository herunter, und checkt eine Arbeitskopie der letzten Version aus. Wenn Du in das neue `grit` Verzeichnis schaust, findest du dort die in diesem Projekt enthaltenen Dateien und kannst sie benutzen oder bearbeiten. Wenn du das Repository in ein Verzeichnis mit einem anderen Namen als `grit` klonen willst, kannst du das wie folgt angeben:
 
 	$ git clone git://github.com/schacon/grit.git mygrit
 
@@ -66,7 +66,7 @@ Dieser Befehl tut das gleiche wie der vorhergehende, aber das Zielverzeichnis is
 
 Git has a number of different transfer protocols you can use. The previous example uses the `git://` protocol, but you may also see `http(s)://` or `user@server:/path.git`, which uses the SSH transfer protocol. Chapter 4 will introduce all of the available options the server can set up to access your Git repository and the pros and cons of each.
 
-Git unterst&#252;tzt eine Reihe unterschiedlicher &#220;bertragungsprotokolle, die Du verwenden kannst. Das vorhergehende Beispiel verwendet das `git://` Protokoll, aber Du wirst auch `http(s)://` oder `user@server:/path.git` begegnen, die das SSH Protokoll verwenden. In Kapitel 4 werden wir die verschiedenen Optionen besprechen, die ein Server hat, um Zugriff auf ein Git Repository zu erlauben - ebenso wie ihre jeweiligen Vor- und Nachteile.
+Git unterst&#252;tzt eine Reihe unterschiedlicher &#220;bertragungsprotokolle, die du verwenden kannst. Das vorhergehende Beispiel verwendet das `git://` Protokoll, aber du wirst auch `http(s)://` oder `user@server:/path.git` finden, die das SSH Protokoll verwenden. In Kapitel 4 gehen wir auf die verschiedenen Optionen (und deren Vor- und Nachteile) ein, die ein Server hat, um Zugriff auf ein Git Repository zu erlauben.
 
 ## Recording Changes to the Repository ##
 
@@ -74,15 +74,15 @@ Git unterst&#252;tzt eine Reihe unterschiedlicher &#220;bertragungsprotokolle, die Du ve
 
 You have a bona fide Git repository and a checkout or working copy of the files for that project. You need to make some changes and commit snapshots of those changes into your repository each time the project reaches a state you want to record.
 
-Du hast jetzt ein vollst&#228;ndiges und funktionierendes Git Repository und ein Checkout (xxx) (eine Arbeitskopie) der Dateien in diesem Projekt. Du willst jetzt &#196;nderungen an diesen Dateien vornehmen und Snapshots (xxx) (Commits) der Dateien immer dann anlegen, wenn das Projekt einen Zustand erreicht, den Du aufzeichnen willst.
+Du hast jetzt ein vollst&#228;ndiges und funktionierendes Git Repository und ein Checkout (eine Arbeitskopie) der Dateien in diesem Projekt. Du willst jetzt &#196;nderungen an diesen Dateien vornehmen und Snapshots (Commits) der Dateien immer dann anlegen, wenn das Projekt einen Zustand erreicht, den du aufzeichnen willst.
 
 Remember that each file in your working directory can be in one of two states: tracked or untracked. Tracked files are files that were in the last snapshot; they can be unmodified, modified, or staged. Untracked files are everything else - any files in your working directory that were not in your last snapshot and are not in your staging area.  When you first clone a repository, all of your files will be tracked and unmodified because you just checked them out and haven&#8217;t edited anything. 
 
-Jede Datei in deinem Arbeitsverzeichnis kann sich entweder unter Versionskontrolle stehen (xxx) oder nicht. Dateien, die sich im letzten Snapshot befanden, stehen unter Versionskontrolle. Sie k&#246;nnen entweder unver&#228;ndert, modifiziert oder f&#252;r den n&#228;chsten Commit markiert sein. Alle anderen Dateien stehen nicht unter Versionskontrolle: das sind alle Dateien, die sich in deinem Arbeitsverzeichnis befinden, die aber nicht schon im letzten Snapshot vorhanden waren und die sich nicht in der Staging Area (xxx) befinden. Wenn Du ein Repository gerade geklont hast, sind alle Dateien unter Versionskontrolle und unver&#228;ndert - Du hast sie gerade ausgecheckt (xxx) aber noch nichts ver&#228;ndert.
+Jede Datei in deinem Arbeitsverzeichnis kann entweder unter Versionskontrolle befinden (&quot;versioniert sein&quot;) oder nicht. Alle Dateien, die sich im letzten Snapshot (Commit) befanden, stehen unter Versionskontrolle. Sie k&#246;nnen entweder unver&#228;ndert, modifiziert oder f&#252;r den n&#228;chsten Commit markiert sein. Alle anderen Dateien in deinem Arbeitsverzeichnis dagegen sind nicht versioniert: das sind all diejenigen Dateien, die nicht schon im letzten Snapshot enthalten waren und die sich nicht in der Staging Area befinden (xxx new, staged files are being tracked? xxx). Wenn Du ein Repository gerade geklont hast, sind alle Dateien versioniert und unver&#228;ndert - du hast sie gerade ausgecheckt aber noch nichts ver&#228;ndert.
 
 As you edit files, Git sees them as modified, because you&#8217;ve changed them since your last commit. You stage these modified files and then commit all your staged changes, and the cycle repeats. This lifecycle is illustrated in Figure 2-1.
 
-Sobald Du Dateien bearbeitest, wird Git sie als modifiziert erkennen, weil Du sie seit dem letzten Commit ge&#228;ndert hast. Du markierst diese ge&#228;nderten Dateien f&#252;r den n&#228;chsten Commit (d.h. Du f&#252;gst sie zur Staging Area hinzu), legst aus allen markierten &#196;nderungen einen Commit an und der Vorgang beginnt von vorn. Bild 2-1 stellt diesen Zyklus dar:
+Sobald du versionierte Dateien bearbeitest, wird Git sie als modifiziert erkennen, weil du sie seit dem letzten Commit ge&#228;ndert hast. Du merkst diese ge&#228;nderten Dateien f&#252;r den n&#228;chsten Commit vor (d.h. du f&#252;gst sie zur Staging Area hinzu), legst aus allen markierten &#196;nderungen einen Commit an und der Vorgang beginnt von vorn. Bild 2-1 stellt diesen Zyklus dar:
 
 Insert 18333fig0201.png 
 Fig 2-1. The lifecycle of the status of your files
@@ -94,7 +94,7 @@ Bild 2-1. Zyklus der Grundzust&#228;nde deiner Dateien
 
 The main tool you use to determine which files are in which state is the git status command. If you run this command directly after a clone, you should see something like this:
 
-Das wichtigste Werkzeug, um den Zustand zu &#252;berpr&#252;fen, in dem sich die Dateien in deinem Repository befinden, ist der Befehl `git status`. Wenn Du diesen Befehl ausf&#252;hrst, unmittelbar nachdem Du ein Repository geklont hast, solltest Du in etwa Folgendes sehen:
+Das wichtigste Hilfsmittel, um den Zustand zu &#252;berpr&#252;fen, in dem sich die Dateien in deinem Repository gerade befinden, ist der Befehl `git status`. Wenn du diesen Befehl ausf&#252;hrst, unmittelbar nachdem du ein Repository geklont hast, solltest du in etwa Folgendes sehen:
 
 	$ git status
 	# On branch master
@@ -102,11 +102,11 @@ Das wichtigste Werkzeug, um den Zustand zu &#252;berpr&#252;fen, in dem sich die Dateien
 
 This means you have a clean working directory&#8212;in other words, there are no tracked and modified files. Git also doesn&#8217;t see any untracked files, or they would be listed here. Finally, the command tells you which branch you&#8217;re on. For now, that is always master, which is the default; you won&#8217;t worry about it here. The next chapter will go over branches and references in detail.
 
-Man sagt auch, Du hast ein sauberes Arbeitsverzeichnis. In anderen Worten, es gibt keine Dateien, die unter Versionskontrolle stehen und ge&#228;ndert sind - andernfalls w&#252;rden sie hier aufgelistet werden. Au&#223;erdem teilt dir der Befehl mit, in welchem Branch (xxx) Du dich befindest. In diesem Beispiel ist dies der Standard Branch `master` (xxx). Mach dir dar&#252;ber im Moment keine Gedanken, wir werden im n&#228;chsten Kapitel auf Branches und Referenzen detailliert eingehen.
+Man sagt auch, du hast ein sauberes Arbeitsverzeichnis. Mit anderen Worten, es gibt keine Dateien, die unter Versionskontrolle stehen und seit dem letzten Commit ge&#228;ndert wurden - andernfalls w&#252;rden sie hier aufgelistet werden. Au&#223;erdem teilt dir der Befehl mit, in welchem Branch du dich befindest. In diesem Beispiel ist dies der Standard Branch `master`. Mach dir dar&#252;ber im Moment keine Gedanken, wir werden im n&#228;chsten Kapitel auf Branches und Referenzen detailliert eingehen.
 
 Let&#8217;s say you add a new file to your project, a simple README file. If the file didn&#8217;t exist before, and you run `git status`, you see your untracked file like so:
 
-Sagen wir Du f&#252;gst eine neue Datei zu deinem Projekt hinzu: eine README Datei. Wenn die Datei zuvor nicht existiert hat und Du jetzt `git status` ausf&#252;hrst, wirst die bisher nicht versionskontrollierte Datei wie folgt angezeigt werden:
+Sagen wir du f&#252;gst eine neue README Datei zu deinem Projekt hinzu. Wenn die Datei zuvor nicht existiert hat und du jetzt `git status` ausf&#252;hrst, zeigt Git die bisher nicht versionierte Datei wie folgt an:
 
 	$ vim README
 	$ git status
@@ -119,7 +119,7 @@ Sagen wir Du f&#252;gst eine neue Datei zu deinem Projekt hinzu: eine README Datei.
 
 You can see that your new README file is untracked, because it&#8217;s under the &#8220;Untracked files&#8221; heading in your status output. Untracked basically means that Git sees a file you didn&#8217;t have in the previous snapshot (commit); Git won&#8217;t start including it in your commit snapshots until you explicitly tell it to do so. It does this so you don&#8217;t accidentally begin including generated binary files or other files that you did not mean to include. You do want to start including README, so let&#8217;s start tracking the file.
 
-Daran, da&#223; deine neue README Datei in der Sektion &quot;Untracked files&quot; aufgelistet wird, siehst du, da&#223; sie noch nicht versionskontrolliert wird. &quot;Untracked&quot; hei&#223;t, da&#223; Git die Datei noch nicht aus dem letzten Snapshot kennt. Git nimmt eine solche Datei nicht von sich aus in die Versionskontrolle auf, sondern Du mu&#223;t das ausdr&#252;cklich anfordern. Der Grund daf&#252;r ist, da&#223; Git nicht einfache alle m&#246;glichen bin&#228;ren Dateien oder anderen Dateien hinzuf&#252;gen soll, die Du nicht in deinem Repository haben willst. Du willst aber jetzt deine neues README Datei zur Versionskontrolle hinzuf&#252;gen, also mu&#223;t Du das explit tun.
+Daran, da&#223; deine neue README Datei in der Sektion &quot;Untracked files&quot; aufgelistet wird, siehst du, da&#223; sie noch nicht versioniert ist, oder mit anderen Worten, da&#223; Git die Datei noch nicht aus dem letzten Snapshot (Commit) kennt. Git nimmt eine solche Datei nicht von sich aus in die Versionskontrolle auf, sondern du mu&#223;t das ausdr&#252;cklich anfordern. Der Grund daf&#252;r ist, da&#223; Git nicht einfache alle m&#246;glichen bin&#228;ren Dateien oder anderen Dateien hinzuf&#252;gen soll, die du nicht in deinem Repository haben willst. Du willst jetzt aber deine neues README Datei zur Versionskontrolle hinzuf&#252;gen, also mu&#223;t du das explit tun.
 
 ### Tracking New Files ###
 
@@ -127,13 +127,13 @@ Daran, da&#223; deine neue README Datei in der Sektion &quot;Untracked files&quot; aufgelistet
 
 In order to begin tracking a new file, you use the command `git add`. To begin tracking the README file, you can run this:
 
-Um eine neue Datei zur Versionskontrolle hinzuzuf&#252;gen, verwendest Du den Befehl `git add`. F&#252;r deine neue README Datei kannst Du ihn wie folgt ausf&#252;hren:
+Um eine neue Datei zur Versionskontrolle hinzuzuf&#252;gen, verwendest du den Befehl `git add`. F&#252;r deine neue README Datei kannst du ihn wie folgt ausf&#252;hren:
 
 	$ git add README
 
 If you run your status command again, you can see that your README file is now tracked and staged:
 
-Wenn Du jetzt den `git status` Befehl erneut ausf&#252;hrst, siehst du, da&#223; sich deine README Datei jetzt unter Versionskontrolle befindet und f&#252;r den n&#228;chsten Commit vorgemerkt ist:
+Wenn du den `git status` Befehl erneut ausf&#252;hrst, siehst du, da&#223; sich deine README Datei jetzt unter Versionskontrolle befindet und f&#252;r den n&#228;chsten Commit vorgemerkt ist:
 
 	$ git status
 	# On branch master
@@ -145,13 +145,13 @@ Wenn Du jetzt den `git status` Befehl erneut ausf&#252;hrst, siehst du, da&#223; sich de
 
 You can tell that it&#8217;s staged because it&#8217;s under the &#8220;Changes to be committed&#8221; heading. If you commit at this point, the version of the file at the time you ran git add is what will be in the historical snapshot. You may recall that when you ran git init earlier, you then ran git add (files) &#8212; that was to begin tracking files in your directory. The git add command takes a path name for either a file or a directory; if it&#8217;s a directory, the command adds all the files in that directory recursively.
 
-Da&#223; die Datei f&#252;r den n&#228;chsten Commit vorgemerkt ist, siehst Du daran, da&#223; sie in der Sektion &quot;Changes to be committed&quot; aufgelistet ist. Wenn Du jetzt einen Commit anlegst, wird der Snapshot den Zustand der Datei beinhalten, in dem Du den Befehl `git add` ausgef&#252;hrt hast. Du erinnerst dich sicherlich daran, da&#223; du, als Du vorhin `git init` ausgef&#252;hrt hast, anschlie&#223;end `git add` ausgef&#252;hrt hast: an dieser Stelle hast Du die Dateien in deinem Verzeichnis der Versionskontrolle hinzugef&#252;gt. Der `git add` Befehl akzeptiert einen Pfadnamen einer Datei oder eines Verzeichnisses. Wenn Du ein Verzeichnis angibst, f&#252;gt `git add` alle Dateien in diesem Verzeichnis und allen Unterverzeichnissen rekursiv hinzu.
+Da&#223; die Datei f&#252;r den n&#228;chsten Commit vorgemerkt ist, siehst du daran, da&#223; sie in der Sektion &quot;Changes to be committed&quot; aufgelistet ist. Wenn du jetzt einen Commit anlegst, wird der Snapshot den Zustand der Datei beinhalten, in dem du den Befehl `git add` ausgef&#252;hrt hast. Du erinnerst dich daran, da&#223; du, als du vorhin `git init` ausgef&#252;hrt hast, anschlie&#223;end `git add` ausgef&#252;hrt hast: an dieser Stelle hast du die Dateien in deinem Verzeichnis der Versionskontrolle hinzugef&#252;gt. Der `git add` Befehl akzeptiert einen Pfadnamen einer Datei oder eines Verzeichnisses. Wenn du ein Verzeichnis angibst, f&#252;gt `git add` alle Dateien in diesem Verzeichnis und allen Unterverzeichnissen rekursiv hinzu.
 
 ### Staging Modified Files ###
 
 Let&#8217;s change a file that was already tracked. If you change a previously tracked file called `benchmarks.rb` and then run your `status` command again, you get something that looks like this:
 
-&#196;ndern wir also eine Datei, die sich in Versionskontrolle befindet. Wenn du eine bereits versionierte Datei `benchmarks.rb` &#228;nderst und den `git status` Befehl ausf&#252;hrst, wirst du in etwa Folgendes sehen:
+&#196;ndern wir also eine Datei, die sich in Versionskontrolle befindet. Wenn du eine bereits versionierte Datei `benchmarks.rb` &#228;nderst und den `git status` Befehl ausf&#252;hrst, erh&#228;ltst du folgendes:
 
 	$ git status
 	# On branch master
@@ -168,7 +168,7 @@ Let&#8217;s change a file that was already tracked. If you change a previously track
 
 The benchmarks.rb file appears under a section named &#8220;Changed but not updated&#8221; &#8212; which means that a file that is tracked has been modified in the working directory but not yet staged. To stage it, you run the `git add` command (it&#8217;s a multipurpose command &#8212; you use it to begin tracking new files, to stage files, and to do other things like marking merge-conflicted files as resolved). Let&#8217;s run `git add` now to stage the benchmarks.rb file, and then run `git status` again:
 
-Die Datei `benchmarks.rb` erscheint in der Sektion &quot;Changed but not updated&quot; - d.h., da&#223; eine versionierte Datei im Arbeitsverzeichnis ver&#228;ndert worden ist, aber noch nicht f&#252;r den Commit vorgemerkt wurde. Um sie zu vorzumerken, f&#252;hrst du den Befehl `git add` aus. (`git add` ist ein Befehl, der zu mehr als einem Zweck n&#252;tzlich ist. Man verwendet ihn, um neue Dateien zur Versionskontrolle hinzuzuf&#252;gen, um Dateien f&#252;r einen Commit zu markieren und verschiedene andere Dinge, beispielsweise zu kennzeichnen, da&#223; man einen Konflikt nach einem Merge als behoben hat.)
+Die Datei `benchmarks.rb` erscheint in der Sektion &quot;Changed but not updated&quot; - d.h., da&#223; eine versionierte Datei im Arbeitsverzeichnis ver&#228;ndert worden ist, aber noch nicht f&#252;r den Commit vorgemerkt wurde. Um sie zu vorzumerken, f&#252;hrst du den Befehl `git add` aus. (`git add` wird zu verschiedenen Zwecken eingesetzt. Man verwendet ihn, um neue Dateien zur Versionskontrolle hinzuzuf&#252;gen, Dateien f&#252;r einen Commit zu markieren und verschiedene andere Dinge - beispielsweise, einen Konflikt aus einem Merge als aufgel&#246;st zu kennzeichnen.)
 
 	$ git add benchmarks.rb
 	$ git status
@@ -182,7 +182,7 @@ Die Datei `benchmarks.rb` erscheint in der Sektion &quot;Changed but not updated&quot; - d
 
 Both files are staged and will go into your next commit. At this point, suppose you remember one little change that you want to make in benchmarks.rb before you commit it. You open it again and make that change, and you&#8217;re ready to commit. However, let&#8217;s run `git status` one more time:
 
-Beide Dateien sind nun f&#252;r den n&#228;chsten Commit vorgemerkt. Sagen wir, du willst jetzt noch eine kleine &#196;nderung vornehmen an der Datei `benchmarks.rb` vornehmen, bevor du den Commit anlegst. Du &#246;ffnest die Datei und &#228;nderst sie. Jetzt k&#246;nntest du den Commit anlegen. Aber zuvor f&#252;hren wir noch mal `git status` aus:
+Beide Dateien sind nun f&#252;r den n&#228;chsten Commit vorgemerkt. Nehmen wir an, du willst jetzt aber noch eine weitere &#196;nderung an der Datei `benchmarks.rb` vornehmen, bevor du den Commit tats&#228;chlich anlegst. Du &#246;ffnest die Datei und &#228;nderst sie. Jetzt k&#246;nntest du den Commit anlegen. Aber zuvor f&#252;hren wir noch mal `git status` aus:
 
 	$ vim benchmarks.rb 
 	$ git status
@@ -201,7 +201,7 @@ Beide Dateien sind nun f&#252;r den n&#228;chsten Commit vorgemerkt. Sagen wir, du wills
 
 What the heck? Now benchmarks.rb is listed as both staged and unstaged. How is that possible? It turns out that Git stages a file exactly as it is when you run the git add command. If you commit now, the version of benchmarks.rb as it was when you last ran the git add command is how it will go into the commit, not the version of the file as it looks in your working directory when you run git commit. If you modify a file after you run `git add`, you have to run `git add` again to stage the latest version of the file:
 
-Huch, was ist das? Jetzt wird deine Datei sowohl als f&#252;r den Commit vorgemerkt aufgelistet, als auch als nicht vorgemerkt. Die Erkl&#228;rung daf&#252;r ist, da&#223; Git eine Datei in exakt dem Zustand f&#252;r den Commit vormerkt, in dem sie sich befindet, wenn du den Befehl `git add` ausf&#252;hrst. Wenn du den Commit jetzt anlegst, wird die Version der Datei `benchmarks.rb` diejenigen Inhalte haben, die sie hatte, als du `git add` zuletzt ausgef&#252;hrt hast - nicht diejenigen, die sie hat, wenn du den Commit tats&#228;chlich anlegst. Wenn du stattdessen die gegenw&#228;rtige, letzte Version im Commit haben willst, kannst du einfach erneut `git add` ausf&#252;hren:
+Huch, was ist das? Jetzt wird `benchmarks.rb` sowohl als f&#252;r den Commit vorgemerkt und als ge&#228;ndert aufgelistet. Die Erkl&#228;rung daf&#252;r ist, da&#223; Git eine Datei in exakt dem Zustand f&#252;r den Commit vormerkt, in dem sie sich befindet, wenn du den Befehl `git add` ausf&#252;hrst. Wenn du den Commit jetzt anlegst, wird die Version der Datei `benchmarks.rb` diejenigen Inhalte haben, die sie hatte, als du `git add` zuletzt ausgef&#252;hrt hast - nicht diejenigen, die sie in dem Moment hat, wenn du den Commit anlegst. Wenn du stattdessen die gegenw&#228;rtige Version im Commit haben willst, kannst du einfach erneut `git add` ausf&#252;hren:
 
 	$ git add benchmarks.rb
 	$ git status
@@ -219,7 +219,7 @@ Huch, was ist das? Jetzt wird deine Datei sowohl als f&#252;r den Commit vorgemerkt
 
 Often, you&#8217;ll have a class of files that you don&#8217;t want Git to automatically add or even show you as being untracked. These are generally automatically generated files such as log files or files produced by your build system. In such cases, you can create a file listing patterns to match them named .gitignore.  Here is an example .gitignore file:
 
-Du wirst in der Regel eine Reihe von Dateien in deinem Projektverzeichnis haben, die du nicht versionskontrollieren und nicht im Repository haben willst, wie z.B. automatisch generierte Dateien wie Logdateien oder Dateien, die dein Build-System erzeugt. In solchen F&#228;llen kannst du in einer Datei alle Dateien oder Dateimuster angeben, die du ignorieren willst.
+Du wirst in der Regel eine Reihe von Dateien in deinem Projektverzeichnis haben, die du nicht versionieren oder im Repository haben willst, wie z.B. automatisch generierte Dateien wie Logdateien oder Dateien, die dein Build-System erzeugt. In solchen F&#228;llen kannst du in einer Datei alle Dateien oder Dateimuster angeben, die du ignorieren willst.
 
 	$ cat .gitignore
 	*.[oa]
@@ -227,11 +227,11 @@ Du wirst in der Regel eine Reihe von Dateien in deinem Projektverzeichnis haben,
 
 The first line tells Git to ignore any files ending in .o or .a &#8212; object and archive files that may be the product of building your code. The second line tells Git to ignore all files that end with a tilde (`~`), which is used by many text editors such as Emacs to mark temporary files. You may also include a log, tmp, or pid directory; automatically generated documentation; and so on. Setting up a .gitignore file before you get going is generally a good idea so you don&#8217;t accidentally commit files that you really don&#8217;t want in your Git repository.
 
-Die erste Zeile teilt Git mit, da&#223; es alle Dateien ignorieren soll, die mit einem `.o` oder `.a` enden - Objekt- und Archiv-Dateien, die von deinem Build-System erzeugt werden. Die zweite Zeile bewirkt, da&#223; alle Dateien ignoriert werden, die mit einer Tilde (`~`) enden - viele Texteditoren speichern ihre tempor&#228;ren Dateien auf diese Weise, beispielsweise Emacs. Du kannst au&#223;erdem Verzeichnisse wie `log`, `tmp` oder `pid` hinzuf&#252;gen, automatisch erzeugte Dokumentation, und so weiter. Eine `.gitignore` Datei anzulegen, bevor man mit der Arbeit anf&#228;ngt, ist in der Regel eine gute Idee, damit man nicht versehentlich Dateien ins Repository hinzuf&#252;gt, die man dort nicht wirklich haben will.
+Die erste Zeile weist Git an, alle Dateien zu ignorieren, die mit einem `.o` oder `.a` enden (also Objekt- und Archiv-Dateien, die von deinem Build-System erzeugt werden). Die zweite Zeile bewirkt, da&#223; alle Dateien ignoriert werden, die mit einer Tilde (`~`) enden. Viele Texteditoren speichern ihre tempor&#228;ren Dateien auf diese Weise, wie bespielsweise Emacs. Du kannst au&#223;erdem Verzeichnisse wie `log`, `tmp` oder `pid` hinzuf&#252;gen, automatisch erzeugte Dokumentation, und so weiter. Es ist normalerweise empfehlenswert, eine `.gitignore` Datei anzulegen, bevor man mit der eigentlichen Arbeit anf&#228;ngt, damit man nicht versehentlich Dateien ins Repository hinzuf&#252;gt, die man dort nicht wirklich haben will.
 
 The rules for the patterns you can put in the .gitignore file are as follows:
 
-Die Regeln f&#252;r die Dateimuster in der `.gitignore` Datei sind folgende:
+Die Regeln f&#252;r Eintr&#228;ge in der `.gitignore` Datei sind:
 
 *	Blank lines or lines starting with # are ignored.
 *	Standard glob patterns work.
@@ -239,11 +239,11 @@ Die Regeln f&#252;r die Dateimuster in der `.gitignore` Datei sind folgende:
 *	You can negate a pattern by starting it with an exclamation point (`!`).
 
 * Leere Zeilen oder Zeilen, die mit `#` beginnen, werden ignoriert.
-* Standard `glob` Muster funktionieren.
+* Standard `glob` Muster funktionieren (siehe den n&#228;chsten Absatz).
 * Du kannst ein Muster mit einem Schr&#228;gstrich (`/`) beenden, um ein Verzeichnis zu bezeichnen.
 * Du kannst ein Muster negieren, indem du ein Ausrufezeichen (`!`) voranstellst.
 
-Glob patterns are like simplified regular expressions that shells use. An asterisk (`*`) matches zero or more characters; `[abc]` matches any character inside the brackets (in this case a, b, or c); a question mark (`?`) matches a single character; and brackets enclosing characters separated by a hyphen(`[0-9]`) matches any character between them (in this case 0 through 9) . 
+Glob patterns are like simplified regular expressions that shells use. An asterisk (`*`) matches zero or more characters; `[abc]` matches any character inside the brackets (in this case a, b, or c); a question mark (`?`) matches a single character; and brackets enclosing characters seperated by a hyphen(`[0-9]`) matches any character between them (in this case 0 through 9). 
 
 Glob Muster sind vereinfachte Regul&#228;re Ausdr&#252;cke, die von der Shell verwendet werden. Ein Stern (`*`) bezeichnet &quot;kein oder mehrere Zeichen&quot;; `[abc]` bezeichnet eines der in den eckigen Klammern angegebenen Zeichen (in diesem Fall also `a`, `b` oder `c`); ein Fragezeichen (`?`) bezeichnet ein beliebiges, einzelnes Zeichen; und eckige Klammern mit Zeichen, die von einem Bindestrich getrennt werden (`[0-9]`) bezeichnen ein Zeichen aus der jeweiligen Menge von Zeichen (in diesem Fall also aus der Menge der Zeichen von 0 bis 9).
 
@@ -259,22 +259,24 @@ Hier ist noch ein Beispiel f&#252;r eine `.gitignore` Datei:
 	doc/*.txt # ignore doc/notes.txt, but not doc/server/arch.txt
 
 	# ein Kommentar - er wird ignoriert
-	*.a       # keine .a Dateien
-	!lib.a    # aber lib.a Dateien, auch wenn obige Zeile .a Dateien ignoriert
-	/TODO     # ignoriert eine TODO Datei nur im Rootverzeichnis (xxx), nicht in
-	          # Unterverzeichnissen
+	*.a       # ignoriert alle Dateien, die mit .a enden
+	!lib.a    # nicht aber lib.a Dateien (obwohl obige Zeile *.a ignoriert)
+	/TODO     # ignoriert eine TODO Datei nur im Wurzelverzeichnis, nicht aber
+	          # in Unterverzeichnissen
 	build/    # ignoriert alle Dateien im build/ Verzeichnis
 	doc/*.txt # ignoriert doc/notes.txt, aber nicht doc/server/arch.txt
 
 ### Viewing Your Staged and Unstaged Changes ###
 
+### Die &#196;nderungen in der Staging Area durchsehen ###
+
 If the `git status` command is too vague for you &#8212; you want to know exactly what you changed, not just which files were changed &#8212; you can use the `git diff` command. We&#8217;ll cover `git diff` in more detail later; but you&#8217;ll probably use it most often to answer these two questions: What have you changed but not yet staged? And what have you staged that you are about to commit? Although `git status` answers those questions very generally, `git diff` shows you the exact lines added and removed &#8212; the patch, as it were. 
 
-Wenn dir die Ausgabe des Befehl `git status` nicht aussagekr&#228;ftig genug ist, weil du exakt wissen willst, was sich ge&#228;ndert hat, nicht lediglich, welche Dateien &#252;berhaupt ge&#228;ndert wurden, kannst du den `git diff` Befehl verwenden. Wir werden `git diff` sp&#228;ter noch mal im Detail besprechen, aber du wirst diese Befehl in der Regel verwenden wollen, um die folgenden zwei Fragen zu beantworten: Was hast du ge&#228;ndert, aber noch nicht f&#252;r einen Commit vorgemerkt? Und was hast du f&#252;r einen Commit bereits vorgemerkt? W&#228;hrend `git status` diese Fragen nur mit Dateinamen beantwortet, zeigt dir `git diff` exakt an, welche Zeilen hinzugef&#252;gt, ge&#228;ndert und entfernt wurden. (xxx the patch, as it were ???)
+Wenn dir die Ausgabe des Befehl `git status` nicht aussagekr&#228;ftig genug ist, weil du exakt wissen willst, was sich ge&#228;ndert hat - und nicht lediglich, welche Dateien &#252;berhaupt ge&#228;ndert wurden - kannst du den `git diff` Befehl verwenden. Wir werden `git diff` sp&#228;ter noch mal im Detail besprechen, aber du wirst diesen Befehl in der Regel verwenden wollen, um eine der folgenden, zwei Fragen zu beantworten: Was hast du ge&#228;ndert, aber noch nicht f&#252;r einen Commit vorgemerkt? Und was hast du f&#252;r einen Commit bereits vorgemerkt? W&#228;hrend `git status` diese Fragen nur mit Dateinamen beantwortet, zeigt dir `git diff` exakt an, welche Zeilen hinzugef&#252;gt, ge&#228;ndert und entfernt wurden. (xxx &quot;the patch, as it were&quot; ??? xxx)
 
 Let&#8217;s say you edit and stage the README file again and then edit the benchmarks.rb file without staging it. If you run your `status` command, you once again see something like this:
 
-Nehmen wir an, du hast die Datei README ge&#228;ndert und f&#252;r einen Commit vorgemerkt. Dann &#228;nderst du au&#223;erdem die Datei `benchmarks.rb`, aber merkst sie noch nicht vor. Wenn du den `git status` Befehl ausf&#252;hrst, zeigt er dir in etwa Folgendes an:
+Nehmen wir an, du hast die Datei README ge&#228;ndert und f&#252;r einen Commit in der Staging Area vorgemerkt. Dann &#228;nderst du au&#223;erdem die Datei `benchmarks.rb`, f&#252;gst sie aber noch nicht zur Staging Area hinzu. Wenn du den `git status` Befehl ausf&#252;hrst, zeigt er dir in etwa Folgendes an:
 
 	$ git status
 	# On branch master
@@ -291,7 +293,7 @@ Nehmen wir an, du hast die Datei README ge&#228;ndert und f&#252;r einen Commit vorgemer
 
 To see what you&#8217;ve changed but not yet staged, type `git diff` with no other arguments:
 
-Um zu sehen, welche &#196;nderungen du bisher noch nicht f&#252;r den Commit markiert hast, f&#252;hre `git diff` ohne irgendwelche weiteren Argumente aus:
+Um zu sehen, welche &#196;nderungen du bisher noch nicht f&#252;r den Commit vorgemerkt hast, f&#252;hre `git diff` ohne irgendwelche weiteren Argumente aus:
 
 	$ git diff
 	diff --git a/benchmarks.rb b/benchmarks.rb
@@ -316,7 +318,7 @@ Dieser Befehl vergleicht die Inhalte deines Arbeitsverzeichnisses mit den Inhalt
 
 If you want to see what you&#8217;ve staged that will go into your next commit, you can use `git diff &#8211;-cached`. (In Git versions 1.6.1 and later, you can also use `git diff &#8211;-staged`, which may be easier to remember.) This command compares your staged changes to your last commit:
 
-Wenn du sehen willst, welche &#196;nderungen in der Staging Area sind und f&#252;r den n&#228;chsten Commit vorgesehen sind, kannst du `git diff --cached` verwenden. (Ab der Version Git 1.6.1 kannst du au&#223;erdem `git diff --staged` verwenden, was vielleicht leichter zu merken ist.) Dieser Befehl vergleicht die Inhalte der Staging Area mit dem letzten Commit:
+Wenn du sehen willst, welche &#196;nderungen in der Staging Area und somit f&#252;r den n&#228;chsten Commit vorgesehen sind, kannst du `git diff --cached` verwenden. (Ab der Version Git 1.6.1 kannst du au&#223;erdem `git diff --staged` verwenden, was vielleicht leichter zu merken ist.) Dieser Befehl vergleicht die Inhalte der Staging Area mit dem letzten Commit:
 
 	$ git diff --cached
 	diff --git a/README b/README
@@ -333,7 +335,7 @@ Wenn du sehen willst, welche &#196;nderungen in der Staging Area sind und f&#252;r den n
 
 It&#8217;s important to note that `git diff` by itself doesn&#8217;t show all changes made since your last commit &#8212; only changes that are still unstaged. This can be confusing, because if you&#8217;ve staged all of your changes, `git diff` will give you no output.
 
-Es ist wichtig, sich daran zu erinnern, da&#223; `git diff` selbst nicht alle &#196;nderungen seit dem letzten Commit anzeigt - es zeigt lediglich diejenigen &#196;nderungen an, die noch nicht in der Staging Area sind. Das kann verwirrend sein, denn wenn du all deine &#196;nderungen bereits f&#252;r einen Commit markiert hast, zeigt `git diff` &#252;berhaupt nichts an.
+Es ist wichtig, im Kopf zu behalten, da&#223; `git diff` selbst nicht alle &#196;nderungen seit dem letzten Commit anzeigt - es zeigt lediglich diejenigen &#196;nderungen an, die noch nicht in der Staging Area sind. Das kann verwirrend sein: wenn du all deine &#196;nderungen bereits f&#252;r einen Commit vorgemerkt	 hast, zeigt `git diff` &#252;berhaupt nichts an.
 
 For another example, if you stage the benchmarks.rb file and then edit it, you can use `git diff` to see the changes in the file that are staged and the changes that are unstaged:
 
@@ -355,7 +357,7 @@ Ein anderes Beispiel. Wenn du &#196;nderungen an der Datei `benchmarks.rb` bereits z
 
 Now you can use `git diff` to see what is still unstaged
 
-Jetzt kannst du `git diff` verwenden, um zu sehen, was noch nicht f&#252;r den Commit vorgesehen ist:
+Jetzt kannst du `git diff` verwenden, um zu sehen, was noch nicht f&#252;r den n&#228;chsten Commit vorgesehen ist:
 
 	$ git diff 
 	diff --git a/benchmarks.rb b/benchmarks.rb
@@ -396,13 +398,13 @@ Nachdem du jetzt alle &#196;nderungen, die du im n&#228;chsten Commit haben willst, in d
 
 	$ git commit
 
-Doing so launches your editor of choice. (This is set by your shell&#8217;s `$EDITOR` environment variable &#8212; usually vim or emacs, although you can configure it with whatever you want using the `git config --global core.editor` command as you saw in Chapter 1). 
+Doing so launches your editor of choice. (This is set by your shell&#8217;s `$EDITOR` environment variable &#8212; usually vim or emacs, although you can configure it with whatever you want using the `git config --global core.editor` command as you saw in Chapter 1).
 
 Wenn du diesen Befehl ausf&#252;hrst, wird Git deinen Texteditor starten. (D.h. denjenigen Texteditor, der durch die `$EDITOR` Variable deiner Shell angegeben wird - normalerweise ist das vim oder emacs, aber du kannst jeden Editor deiner Wahl angeben. Wie in Kapitel 1 besprochen, kannst du dazu `git config --global core.editor` verwenden.)
 
 The editor displays the following text (this example is a Vim screen):
 
-Der Editor zeigt einen Text wie den folgenden an (dies ist ein Vim Bespiel):
+Der Editor zeigt in etwa folgendes an (dies ist ein Vim Bespiel):
 
 	# Please enter the commit message for your changes. Lines starting
 	# with '#' will be ignored, and an empty message aborts the commit.
@@ -419,7 +421,7 @@ Der Editor zeigt einen Text wie den folgenden an (dies ist ein Vim Bespiel):
 
 You can see that the default commit message contains the latest output of the `git status` command commented out and one empty line on top. You can remove these comments and type your commit message, or you can leave them there to help you remember what you&#8217;re committing. (For an even more explicit reminder of what you&#8217;ve modified, you can pass the `-v` option to `git commit`. Doing so also puts the diff of your change in the editor so you can see exactly what you did.) When you exit the editor, Git creates your commit with that commit message (with the comments and diff stripped out).
 
-Du siehst, da&#223; die Standard Commit Meldung die Ausgabe des letzten `git status` Befehls als einen Kommentar und dar&#252;ber eine leere Zeile. Du kannst den Kommentar entfernen und deine eigene Meldung einf&#252;gen. Oder du kannst sie stehen lassen, damit du siehst, was im Commit enthalten sein wird. (Um das noch detaillierter sehen zu k&#246;nnen, kannst du den Befehl `git commit` mit der Option `-v` verwenden. Das f&#252;gt zus&#228;tzlich das Diff deiner &#196;nderungen im Editor ein, so da&#223; du exakt sehen kannst, was sich im Commit befindet.) Wenn du den Texteditor beendest, erzeugt Git den Commit mit der gegebenen Meldung (d.h., ohne den Kommentar und das Diff).
+Du siehst, da&#223; die vorausgef&#252;llte Commit Meldung die Ausgabe des letzten `git status` Befehls als einen Kommentar und dar&#252;ber eine leere Zeile. Du kannst den Kommentar entfernen und deine eigene Meldung einf&#252;gen. Oder du kannst sie stehen lassen, damit du siehst, was im Commit enthalten sein wird. (Um die &#196;nderungen noch detaillierter sehen zu k&#246;nnen, kannst du den Befehl `git commit` mit der Option `-v` verwenden. Das f&#252;gt zus&#228;tzlich das Diff deiner &#196;nderungen im Editor ein, so da&#223; du exakt sehen kannst, was sich im Commit befindet.) Wenn du den Texteditor beendest, erzeugt Git den Commit mit der gegebenen Meldung (d.h., ohne den Kommentar und das Diff).
 
 Alternatively, you can type your commit message inline with the `commit` command by specifying it after a -m flag, like this:
 
@@ -432,11 +434,11 @@ Alternativ kannst du die Commit Meldung direkt mit dem Befehl `git commit` angeb
 
 Now you&#8217;ve created your first commit! You can see that the commit has given you some output about itself: which branch you committed to (master), what SHA-1 checksum the commit has (`463dc4f`), how many files were changed, and statistics about lines added and removed in the commit.
 
-Du hast jetzt deinen ersten Commit angelegt! Git zeigt dir einige Details &#252;ber den neue angelegten Commit an: in welchem Branch du den Commit angelegt hast (master), welche SHA-1 Checksumme der Commit hat (`463dc4f`), wie viele Dateien ge&#228;ndert wurden und eine Statistiken &#252;ber die neu hinzugef&#252;gten und entfernten Zeilen in diesem Commit.
+Du hast jetzt deinen ersten Commit angelegt! Git zeigt dir als R&#252;ckmeldung einige Details &#252;ber den neu angelegten Commit an: in welchem Branch er sich befindet (master), welche SHA-1 Checksumme er hat (`463dc4f`), wie viele Dateien ge&#228;ndert wurden und eine Zusammenfassung &#252;ber die insgesamt neu hinzugef&#252;gten und entfernten Zeilen in diesem Commit.
 
 Remember that the commit records the snapshot you set up in your staging area. Anything you didn&#8217;t stage is still sitting there modified; you can do another commit to add it to your history. Every time you perform a commit, you&#8217;re recording a snapshot of your project that you can revert to or compare to later.
 
-Denke daran, da&#223; der Commit denjenigen Snapshot aufzeichnet, den du in der Staging Area vorkonfiguriert hattest. &#196;nderungen, die nicht in der Staging Area waren, werden weiterhin als modifizierte Dateien vorliegen. Jedes Mal wenn du einen Commit anlegst, zeichnest du einen Snapshot Deines Projektes auf, zu dem du zur&#252;ckkehren oder mit dem du sp&#228;tere &#196;nderungen vergleichen kannst.
+Denke daran, da&#223; jeder neue Commit denjenigen Snapshot aufzeichnet, den du in der Staging Area vorkonfiguriert hattest. &#196;nderungen, die nicht in der Staging Area waren, werden weiterhin als modifizierte Dateien im Arbeitsverzeichnis vorliegen. Jedes Mal wenn du einen Commit anlegst, zeichnest du einen Snapshot Deines Projektes auf, zu dem du zur&#252;ckkehren oder mit dem du sp&#228;tere &#196;nderungen vergleichen kannst.
 
 ### Skipping the Staging Area ###
 
@@ -444,7 +446,7 @@ Denke daran, da&#223; der Commit denjenigen Snapshot aufzeichnet, den du in der Stag
 
 Although it can be amazingly useful for crafting commits exactly how you want them, the staging area is sometimes a bit more complex than you need in your workflow. If you want to skip the staging area, Git provides a simple shortcut. Providing the `-a` option to the `git commit` command makes Git automatically stage every file that is already tracked before doing the commit, letting you skip the `git add` part:
 
-Obwohl sie unglaublich n&#252;tzlich ist, um genau diejenigen Commits anzulegen, die du in deiner Projekt Historie haben willst, ist die Staging Area manchmal ein bi&#223;chen umst&#228;ndlich. Git kennt deshalb eine Abk&#252;rzung, mit der du die Staging Area &#252;berspringen kannst. Wenn du den Befehl `git commit` mit der Option `-a` ausf&#252;hrst, wird Git automatisch alle &#196;nderungen an allen Dateien in den Commit &#252;bernehmen, die sich bereits unter Versionskontrolle befinden - auf diese Weise kannst du `git add` auch weglassen:
+Obwohl die Staging Area unglaublich n&#252;tzlich ist, um genau diejenigen Commits anzulegen, die du in deiner Projekt Historie haben willst, ist sie manchmal auch ein bi&#223;chen umst&#228;ndlich. Git stellt dir deshalb eine Abk&#252;rzung zur Verf&#252;gung, mit der du die Staging Area &#252;berspringen kannst. Wenn du den Befehl `git commit` mit der Option `-a` ausf&#252;hrst, &#252;bernimmt Git automatisch alle &#196;nderungen an dejenigen Dateien, die sich bereits unter Versionskontrolle befinden, in den Commit - so da&#223; du auf diese Weise den Schritt `git add` weglassen kannst:
 
 	$ git status
 	# On branch master
@@ -459,7 +461,7 @@ Obwohl sie unglaublich n&#252;tzlich ist, um genau diejenigen Commits anzulegen, die
 
 Notice how you don&#8217;t have to run `git add` on the benchmarks.rb file in this case before you commit.
 
-Beachte, da&#223; du in diesem Fall bisher noch nicht `git add` ausgef&#252;hrt hattest. Die &#196;nderungen an `benchmarks.rb` werden dennoch in den Commit &#252;bernommen.
+Beachte, da&#223; du in diesem Fall `git add` zuvor noch nicht ausgef&#252;hrt hast, die &#196;nderungen an `benchmarks.rb` aber dennoch in den Commit &#252;bernommen werden.
 
 ### Removing Files ###
 
@@ -467,7 +469,7 @@ Beachte, da&#223; du in diesem Fall bisher noch nicht `git add` ausgef&#252;hrt hattest.
 
 To remove a file from Git, you have to remove it from your tracked files (more accurately, remove it from your staging area) and then commit. The `git rm` command does that and also removes the file from your working directory so you don&#8217;t see it as an untracked file next time around.
 
-Um eine Datei auch Git zu entfernen, mu&#223;t du sie aus der Versionskontrolle nehmen (genauer, aus der Staging Area) und dann einen Commit anlegen. Der Befehl `git rm` tut genau das und l&#246;scht die Datei au&#223;erdem aus dem Arbeitsverzeichnis, so da&#223; sie nicht als eine unversionierte Datei dort unbeabsichtigt liegen bleibt.
+Um eine Datei aus der Git Versionskontrolle nehmen (genauer, aus der Staging Area) und dann einen Commit anlegen. Der Befehl `git rm` tut genau das - und l&#246;scht die Datei au&#223;erdem aus dem Arbeitsverzeichnis, so da&#223; sie dort nicht unbeabsichtigt (als eine nun unversionierte Datei) liegen bleibt.
 
 If you simply remove the file from your working directory, it shows up under the &#8220;Changed but not updated&#8221; (that is, _unstaged_) area of your `git status` output:
 
@@ -485,7 +487,7 @@ Wenn du einfach nur eine Datei aus dem Arbeitsverzeichnis l&#246;schst, wird sie in
 
 Then, if you run `git rm`, it stages the file&#8217;s removal:
 
-Wenn du dann `git rm` ausf&#252;hrst, wird die &#196;nderung f&#252;r den n&#228;chsten Commit in der Staging Area vorgesehen:
+Wenn du jetzt `git rm` ausf&#252;hrst, wird diese &#196;nderung f&#252;r den n&#228;chsten Commit in der Staging Area vorgemerkt:
 
 	$ git rm grit.gemspec
 	rm 'grit.gemspec'
@@ -500,23 +502,23 @@ Wenn du dann `git rm` ausf&#252;hrst, wird die &#196;nderung f&#252;r den n&#228;chsten Commit i
 
 The next time you commit, the file will be gone and no longer tracked. If you modified the file and added it to the index already, you must force the removal with the `-f` option. This is a safety feature to prevent accidental removal of data that hasn&#8217;t yet been recorded in a snapshot and that can&#8217;t be recovered from Git.
 
-Wenn du dann einen Commit anlegst, wird die Datei verschwunden sein und sich nicht l&#228;nger unter Versionskontrolle befinden. Wenn du die Datei zuvor ge&#228;ndert und bereits zur Staging Area hinzugef&#252;gt hattest, mu&#223;t du die Option `-f` verwenden, um zu erzwingen, da&#223; sie gel&#246;scht wird. Dies ist eine Sicherheitsma&#223;nahme, die dazu dient, zu vermeiden, da&#223; du versehentlich Daten l&#246;schst, die sich bisher noch nicht als Commit Snapshot in der Historie deines Projektes befinden - und deshalb auch nicht wiederhergestellt werden k&#246;nnen.
+Wenn du als n&#228;chstes einen Commit anlegst, wird die Datei nicht mehr im Arbeitsverzeichnis liegen und sich nicht l&#228;nger unter Versionskontrolle befinden. Wenn du die Datei zuvor ge&#228;ndert und diese &#196;nderung bereits zur Staging Area hinzugef&#252;gt hattest, mu&#223;t du die Option `-f` verwenden, um zu erzwingen, da&#223; sie gel&#246;scht wird. Dies ist eine Sicherheitsma&#223;nahme, um zu vermeiden, da&#223; du versehentlich Daten l&#246;schst, die sich bisher noch nicht als Commit Snapshot in der Historie deines Projektes befinden - und deshalb auch nicht wiederhergestellt werden k&#246;nnen.
 
 Another useful thing you may want to do is to keep the file in your working tree but remove it from your staging area. In other words, you may want to keep the file on your hard drive but not have Git track it anymore. This is particularly useful if you forgot to add something to your `.gitignore` file and accidentally added it, like a large log file or a bunch of `.a` compiled files. To do this, use the `--cached` option:
 
-Ein anderer Anwendungsfall ist, da&#223; du eine Datei in deinem Arbeitsverzeichnis behalten, aber aus der Staging Area nehmen willst. Anders gesagt, du willst die Datei nicht l&#246;schen, sondern aus der Versionskontrolle nehmen. Das k&#246;nnte zum Beispiel der Fall sein, wenn du vergessen hattest, eine Datei in `.gitignore` anzugeben und sie versehentlich zur Versionskontrolle hinzugef&#252;gt hast, beispielsweise eine gro&#223;e Logdatei oder eine Reihe kompilierter `.a` Dateien. Hierzu kannst du die `--cached` Option verwenden:
+Ein anderer Anwendungsfall f&#252;r `git rm` ist, da&#223; du eine Datei in deinem Arbeitsverzeichnis behalten, aber aus der Staging Area nehmen willst. In anderen Worten, du willst die Datei nicht l&#246;schen, sondern aus der Versionskontrolle nehmen. Das k&#246;nnte zum Beispiel der Fall sein, wenn du vergessen hattest, eine Datei in `.gitignore` anzugeben und sie versehentlich zur Versionskontrolle hinzugef&#252;gt hast, beispielsweise eine gro&#223;e Logdatei oder eine Reihe kompilierter `.a` Dateien. Hierzu kannst du dann die `--cached` Option verwenden:
 
 	$ git rm --cached readme.txt
 
 You can pass files, directories, and file-glob patterns to the `git rm` command. That means you can do things such as
 
-Der `git rm` Befehl akzeptiert Dateien, Verzeichnisse und `glob` Muster . D.h., du kannst z.B. folgendes tun:
+Der `git rm` Befehl akzeptiert Dateien, Verzeichnisse und `glob` Dateimuster. D.h., du kannst z.B. folgendes tun:
 
 	$ git rm log/\*.log
 
 Note the backslash (`\`) in front of the `*`. This is necessary because Git does its own filename expansion in addition to your shell&#8217;s filename expansion. This command removes all files that have the `.log` extension in the `log/` directory. Or, you can do something like this:
 
-Beachte den Backslash (`\`) vor dem Stern (`*`). Er ist sinnvoll weil Git Dateinamen zus&#228;tzlich zur Dateinamen-Expansion (xxx) deiner Shell selbst expandiert (xxx). Dieser Befehl entfernt alle Dateien, die die Erweiterung `.log` haben und sich im `/log` Verzeichnis befinden. Ein anderes Beispiel ist:
+Beachte den Backslash (`\`) vor dem Stern (`*`). Er ist n&#246;tig, weil Git Dateinamen zus&#228;tzlich zur Dateinamen-Expansion deiner Shell selbst vervollst&#228;ndigt. D.h., dieser Befehl entfernt alle Dateien, die die Erweiterung `.log` haben und sich im `/log` Verzeichnis befinden. Ein anderes Beispiel ist:
 
 	$ git rm \*~
 
@@ -530,17 +532,17 @@ Dieser Befehl entfernt alle Dateien, die mit einer Tilde (`~`) aufh&#246;ren.
 
 Unlike many other VCS systems, Git doesn&#8217;t explicitly track file movement. If you rename a file in Git, no metadata is stored in Git that tells it you renamed the file. However, Git is pretty smart about figuring that out after the fact &#8212; we&#8217;ll deal with detecting file movement a bit later.
 
-Anders als andere VCS Systeme verfolgt Git nicht explizit, wenn Dateien verschoben werden. Wenn du eine Datei umbenennst, werden dar&#252;ber keine Metadaten in der Historie gespeichert. Stattdessen ist Git schlau genug, solche Dinge im Nachhinein herauszufinden. Wir werden uns damit sp&#228;ter noch befassen.
+Anders als andere VCS Systeme verfolgt Git nicht explizit, ob Dateien verschoben werden. Wenn du eine Datei umbenennst, werden dar&#252;ber keine Metadaten in der Historie gespeichert. Stattdessen ist Git schlau genug, solche Dinge im Nachhinein herauszufinden. Wir werden uns damit sp&#228;ter noch befassen.
 
 Thus it&#8217;s a bit confusing that Git has a `mv` command. If you want to rename a file in Git, you can run something like
 
-Es ist allerdings ein bi&#223;chen verwirrend, da&#223; Git trotzdem einen `git mv` Befehl mitbringt. Wenn du eine Datei umbenennen willst, kannst du folgendes tun:
+Es ist allerdings ein bi&#223;chen verwirrend, da&#223; Git trotzdem einen `git mv` Befehl mit bringt. Wenn du eine Datei umbenennen willst, kannst du folgendes tun:
 
 	$ git mv file_from file_to
 
 and it works fine. In fact, if you run something like this and look at the status, you&#8217;ll see that Git considers it a renamed file:
 
-Das funktioniert. Wenn du diesen Befehl ausf&#252;hrst und danach den `git status` anzeigst, siehst du, da&#223; Git die Datei als umbenannt betrachtet:
+Das funktioniert. Wenn du diesen Befehl ausf&#252;hrst und danach den `git status` anzeigst, zeigt Git an, da&#223; die Datei umbenannt wurde:
 
 	$ git mv README.txt README
 	$ git status
@@ -563,7 +565,7 @@ Allerdings kannst du genau so gut etwas wie das hier tun:
 
 Git figures out that it&#8217;s a rename implicitly, so it doesn&#8217;t matter if you rename a file that way or with the `mv` command. The only real difference is that `mv` is one command instead of three &#8212; it&#8217;s a convenience function. More important, you can use any tool you like to rename a file, and address the add/rm later, before you commit.
 
-Git ist clever genug, herauszufinden, da&#223; du die Datei umbenannt hast. Du brauchst dies also nicht explizit anzugeben, indem du `git mv` ausf&#252;hrst. Der einzige Unterschied ist, da&#223; du f&#252;r `git mv` nur einen Befehl, nicht drei, ausf&#252;hren mu&#223;t - das ist nat&#252;rlich etwas bequemer. Dar&#252;berhinaus kannst du aber Dateien auf jede beliebige Art und Weise umbenennen und dann sp&#228;ter `git add`/`git rm` verwenden, wenn du einen Commit zusammenstellst.
+Git ist clever genug, selbst herauszufinden, da&#223; du die Datei umbenannt hast. Du brauchst dies also nicht explizit mit dem `git mv` Befehl zu tun. Der einzige Unterschied ist, da&#223; du mit `git mv` nur einen Befehl, nicht drei, ausf&#252;hren mu&#223;t - das ist nat&#252;rlich etwas bequemer. Dar&#252;berhinaus kannst du aber Dateien auf jede beliebige Art und Weise extern umbenennen und dann sp&#228;ter `git add` bzw. `git rm` verwenden, wenn du einen Commit zusammenstellst.
 
 ## Viewing the Commit History ##
 
@@ -571,11 +573,11 @@ Git ist clever genug, herauszufinden, da&#223; du die Datei umbenannt hast. Du brauc
 
 After you have created several commits, or if you have cloned a repository with an existing commit history, you&#8217;ll probably want to look back to see what has happened. The most basic and powerful tool to do this is the `git log` command.
 
-Nachdem du einige Commits angelegt oder ein bestehendes Repository geklont hast, willst du vielleicht herausfinden, welche &#196;nderungen zuletzt vorgenommen wurden. Der grundlegendste Befehl, mit dem du das tun kannst, ist `git log`.
+Nachdem du einige Commits angelegt oder ein bestehendes Repository geklont hast, willst du vielleicht wissen, welche &#196;nderungen zuletzt vorgenommen wurden. Der grundlegendste Befehl, mit dem du das tun kannst, ist `git log`.
 
 These examples use a very simple project called simplegit that I often use for demonstrations. To get the project, run 
 
-In den folgenden Beispielen verwende ich ein sehr einfaches Repository mit dem Namen &quot;simplegit&quot;, das ich oft f&#252;r Demonstationszwecke verwende:
+Die folgende Beispielen beziehen sich auf ein sehr simples Repository mit dem Namen &quot;simplegit&quot;, das ich oft f&#252;r Demonstationszwecke verwende:
 
 	git clone git://github.com/schacon/simplegit-progit.git
 
@@ -604,7 +606,7 @@ Wenn du in diesem Projekt `git log` ausf&#252;hrst, solltest du eine Ausgabe wie die
 
 By default, with no arguments, `git log` lists the commits made in that repository in reverse chronological order. That is, the most recent commits show up first. As you can see, this command lists each commit with its SHA-1 checksum, the author&#8217;s name and e-mail, the date written, and the commit message.
 
-Der Befehl `git log` listet die Historie der Commits eines Projektes in umgekehrter chronologischer Reihenfolge auf, wenn man ihn ohne weitere Argumente ausf&#252;hrt, d.h., die letzten Commits stehen oben. Wie du sehen kannst wird jeder Commit mit seiner SHA-1 Checksumme, Namen und E-Mail Adresse des Autors, dem Datum und der Commit Meldung aufgelistet.
+Der Befehl `git log` listet die Historie der Commits eines Projektes in umgekehrter chronologischer Reihenfolge auf, wenn man ihn ohne weitere Argumente ausf&#252;hrt, d.h. die letzten Commits stehen oben. Wie du sehen kannst wird jeder Commit mit seiner SHA-1 Checksumme, Namen und E-Mail Adresse des Autors, dem Datum und der Commit Meldung aufgelistet.
 
 A huge number and variety of options to the `git log` command are available to show you exactly what you&#8217;re looking for. Here, we&#8217;ll show you some of the most-used options.
 
@@ -612,7 +614,7 @@ F&#252;r den Befehl `git log` gibt es eine riesige Anzahl von Optionen, mit denen ma
 
 One of the more helpful options is `-p`, which shows the diff introduced in each commit. You can also use `-2`, which limits the output to only the last two entries:
 
-Eine sehr n&#252;tzliche Option ist `-p`, was das Diff der &#196;nderungen anzeigt, die in einem Commit enthalten sind. Du kannst au&#223;erdem -2 angeben, wodurch nur die letzten beiden Eintr&#228;ge angezeigt werden:
+Eine sehr n&#252;tzliche Option ist `-p`. Sie zeigt das Diff der &#196;nderungen an, die in einem Commit enthalten sind. Du kannst au&#223;erdem -2 angeben, wodurch nur die letzten beiden Eintr&#228;ge angezeigt werden:
 
 	$ git log &#8211;p -2
 	commit ca82a6dff817ec66f44342007202690a93763949
@@ -655,7 +657,7 @@ Eine sehr n&#252;tzliche Option ist `-p`, was das Diff der &#196;nderungen anzeigt, die
 This option displays the same information but with a diff directly following each entry. This is very helpful for code review or to quickly browse what happened during a series of commits that a collaborator has added.
 You can also use a series of summarizing options with `git log`. For example, if you want to see some abbreviated stats for each commit, you can use the `--stat` option:
 
-Diese Option zeigt also im Prinzip die gleiche Information, aber zus&#228;tzlich ein Diff nach jedem Eintrag. Das ist n&#252;tzlich, um einen Code Review zu machen oder eben mal eine Reihe von Commits durch zu sehen, die ein Mitarbeiter angelegt hat. Au&#223;erdem gibt es verschiedene Optionen, die n&#252;tzlich sind, um Dinge zusammen zu fassen. Beispielsweise kannst du eine kurze Statistik &#252;ber die jeden Commit mit der Option `--stat` anzeigen lassen:
+Diese Option zeigt also im Prinzip die gleiche Information wie zuvor, aber zus&#228;tzlich zu jedem Eintrag ein Diff. Das ist n&#252;tzlich, um einen Code Review zu machen oder eben mal eine Reihe von Commits durch zu schauen, die ein Mitarbeiter angelegt hat. Au&#223;erdem gibt es verschiedene Optionen, die n&#252;tzlich sind, um Dinge zusammen zu fassen. Beispielsweise kannst du eine kurze Statistik &#252;ber die jeden Commit mit der Option `--stat` anzeigen lassen:
 
 	$ git log --stat 
 	commit ca82a6dff817ec66f44342007202690a93763949
@@ -690,7 +692,7 @@ Diese Option zeigt also im Prinzip die gleiche Information, aber zus&#228;tzlich ein
 As you can see, the `--stat` option prints below each commit entry a list of modified files, how many files were changed, and how many lines in those files were added and removed. It also puts a summary of the information at the end.
 Another really useful option is `--pretty`. This option changes the log output to formats other than the default. A few prebuilt options are available for you to use. The oneline option prints each commit on a single line, which is useful if you&#8217;re looking at a lot of commits. In addition, the `short`, `full`, and `fuller` options show the output in roughly the same format but with less or more information, respectively:
 
-Wie du sehen kannst, zeigt die `--stat` Option unterhalb jedes Commits eine kurze Statistik &#252;ber die enthaltenen &#196;nderungen an, welche Dateien ge&#228;ndert wurden und wieviele Zeilen insgesamt hinzugef&#252;gt oder entfernt wurden. Eine weitere n&#252;tzliche Option ist `--pretty`. Diese Option &#228;ndert das Format der Ausgabe und es gibt eine Anzahl mitgelieferter Formate. Das `oneline` Format listet jeden Commit in einer einzigen Zeile, was n&#252;tzlich ist, wenn du eine gro&#223;e Anzahl von Commits durchsuchen willst. Die `short`, `full` und `fuller` Formate zeigen die Commits in &#228;hnlicher Weise an, aber mit jeweils mehr oder weniger Informationen.
+Die `--stat` Option zeigt unterhalb jedes Commits eine kurze Statistik &#252;ber die jeweiligen &#196;nderungen an: welche Dateien ge&#228;ndert wurden und wieviele Zeilen insgesamt hinzugef&#252;gt oder entfernt wurden. Eine weitere n&#252;tzliche Option ist `--pretty`. Diese Option &#228;ndert das Format der Ausgabe und es gibt eine Anzahl mitgelieferter Formate. Das `oneline` Format listet jeden Commit in einer einzigen Zeile, was n&#252;tzlich ist, wenn du eine gro&#223;e Anzahl von Commits durchsuchen willst. Die `short`, `full` und `fuller` Formate zeigen die Commits in &#228;hnlicher Form an, aber mit jeweils mehr oder weniger Informationen.
 
 	$ git log --pretty=oneline
 	ca82a6dff817ec66f44342007202690a93763949 changed the verison number
@@ -699,7 +701,7 @@ Wie du sehen kannst, zeigt die `--stat` Option unterhalb jedes Commits eine kurz
 
 The most interesting option is `format`, which allows you to specify your own log output format. This is especially useful when you&#8217;re generating output for machine parsing &#8212; because you specify the format explicitly, you know it won&#8217;t change with updates to Git:
 
-Eines der interessantesten Formate ist `format`, das die erlaubt, dein eigenes Format zu verwenden. Dies ist inbesondere n&#252;tzlich, wenn du eine Ausgabe in ein anderes Programm einlesen willst - und da du das Format explizit angibst, kannst du sicher sein, da&#223; es sich nicht &#228;ndert, wenn du Git auf eine neuere Version aktualisierst:
+Eines der interessantesten Formate ist `format`, das dir erlaubt, dein eigenes Format zu verwenden. Dies ist inbesondere n&#252;tzlich, wenn du die Ausgabe in ein anderes Programm einlesen willst (da du das Format explizit angibst, kannst du sicher sein, da&#223; es sich nicht &#228;ndert, wenn du Git auf eine neuere Version aktualisierst):
 
 	$ git log --pretty=format:&quot;%h - %an, %ar : %s&quot;
 	ca82a6d - Scott Chacon, 11 months ago : changed the verison number
@@ -746,11 +748,11 @@ Tabelle 2-1 zeigt einige n&#252;tzliche Optionen, die von `format` akzeptiert werden
 
 You may be wondering what the difference is between _author_ and _committer_. The author is the person who originally wrote the work, whereas the committer is the person who last applied the work. So, if you send in a patch to a project and one of the core members applies the patch, both of you get credit &#8212; you as the author and the core member as the committer. We&#8217;ll cover this distinction a bit more in Chapter 5.
 
-Du fragst dich vielleicht, was der Unterschied zwischen _Autor_ und _Committer_ ist. Der Autor ist diejenige Person, die eine &#196;nderung urspr&#252;nglich vorgenommen hat. Der Committer dagegen ist diejenige Person, die den Commit vorgenommen hat. D.h., wenn du einen Patch an ein Projekt Team schickst und eines der Team Mitglieder den Patch akzeptiert und verwendet, wird beiden Anerkennung gezollt (xxx) - sowohl dir als Autor als auch dem Team Mitglied als Comitter. Wir werden auf diese Unterschiedung in Kapitel 5 noch einmal genauer eingehen.
+Du fragst dich vielleicht, was der Unterschied zwischen _Autor_ und _Committer_ ist. Der Autor ist diejenige Person, die eine &#196;nderung urspr&#252;nglich vorgenommen hat. Der Committer dagegen ist diejenige Person, die den Commit angelegt hat. D.h., wenn du einen Patch an ein Projekt Team schickst und eines der Team Mitglieder den Patch akzeptiert und verwendet, wird beiden Anerkennung gezollt (xxx) - sowohl dir als Autor als auch dem Team Mitglied als Comitter. Wir werden auf diese Unterschiedung in Kapitel 5 noch einmal genauer eingehen.
 
 The oneline and format options are particularly useful with another `log` option called `--graph`. This option adds a nice little ASCII graph showing your branch and merge history, which we can see our copy of the Grit project repository:
 
-Die `oneline` und `format` Optionen sind au&#223;erdem n&#252;tzlich zusammen mit einer weiteren Option `--graph`. Diese Option f&#252;gt einen h&#252;bschen kleinen ASCII Graphen hinzu, der die Branch- und Merge-Historie des Projektes anzeigt. Das kannst du z.B. in deinem Klon des Grit Projekt Repositories sehen:
+Die `oneline` und `format` Optionen k&#246;nnen au&#223;erdem zusammen mit einer weiteren Option `--graph` verwendet werden. Diese Option f&#252;gt einen netten kleinen ASCII Graphen hinzu, der die Branch- und Merge-Historie des Projektes anzeigt. Das kannst du z.B. in deinem Klon des Grit Projekt Repositories sehen:
 
 	$ git log --pretty=format:&quot;%h %s&quot; --graph
 	* 2d3acf9 ignore errors from SIGCHLD on trap
@@ -766,7 +768,7 @@ Die `oneline` und `format` Optionen sind au&#223;erdem n&#252;tzlich zusammen mit einer
 
 Those are only some simple output-formatting options to `git log` &#8212; there are many more. Table 2-2 lists the options we&#8217;ve covered so far and some other common formatting options that may be useful, along with how they change the output of the log command.
 
-Das sind nur einige eher simple Format Optionen f&#252;r die Ausgabe von `git log` - es gibt sehr viel mehr davon. Tabelle 2-2 listet die Optionen auf, die wir bisher besprochen haben sowie einige weitere, die n&#252;tzlich sind:
+Das sind nur einige eher simple Format Optionen f&#252;r die Ausgabe von `git log` - es gibt sehr viel mehr davon. Tabelle 2-2 listet diejenigen Optionen auf, die wir bisher besprochen haben, und einige weitere, die besonders n&#252;tzlich sind:
 
 	Option	Description
 	-p	Show the patch introduced with each commit.
@@ -782,9 +784,9 @@ Das sind nur einige eher simple Format Optionen f&#252;r die Ausgabe von `git log` -
 	Option	Beschreibung
 	-p	Zeigt den Patch, der einem Commit entspricht.
 	--stat	Zeigt Statistiken &#252;ber die in einem Commit ge&#228;nderten Dateien und eingef&#252;gten/entfernten Zeilen.
-	--shortstat	Zeigt lediglich die Kurzstatistik &#252;ber eingef&#252;gte/entfernte Zeilen aus der `--stat` Option.
+	--shortstat	Zeigt nur die Kurzstatistik &#252;ber eingef&#252;gte/entfernte Zeilen aus der `--stat` Option.
 	--name-only	Zeigt die Liste der ge&#228;nderte Dateien nach der Commit Information.
-	--name-status	Zeigt die Liste der Dateien mit hinzugef&#252;gt/ge&#228;ndert/entfernt Informationen (xxx).
+	--name-status	Zeigt die Liste der Dateien mit der hinzugef&#252;gt/ge&#228;ndert/entfernt Statistik.
 	--abbrev-commit	Zeigt nur die ersten Zeichen einer SHA-1 Checksumme, nicht alle 40.
 	--relative-date	Zeigt das Datum in relativem Format (z.B. &quot;2 weeks ago&quot;), nicht als vollst&#228;ndiges Datumsformat.
 	--graph	Zeigt einen ASCII Graphen der Branch- und Merge-Historie neben der Ausgabe.
@@ -798,7 +800,7 @@ Zus&#228;tzlich zu den Formatierungsoptionen f&#252;r die Ausgabe akzeptiert `git log` e
 
 However, the time-limiting options such as `--since` and `--until` are very useful. For example, this command gets the list of commits made in the last two weeks:
 
-Allerdings gibt es auch Optionen, die Ausgabe auf der Basis von Zeitangaben zu einzugrenzen, die sehr n&#252;tzlich sein k&#246;nnen. Beispielsweise gibt der folgende Befehl eine Liste aller Commits aus, die in den letzten zwei Wochen angelegt wurden:
+Aber es gibt auch Optionen, die Ausgabe auf der Basis von Zeitangaben zu einzugrenzen und sehr hilfreich sein k&#246;nnen. Beispielsweise gibt der folgende Befehl eine Liste aller Commits aus, die in den letzten zwei Wochen angelegt wurden:
 
 	$ git log --since=2.weeks
 
@@ -808,7 +810,7 @@ Das funktioniert mit einer Reihe von Formaten. Git akzeptiert sowohl ein vollst
 
 You can also filter the list to commits that match some search criteria. The `--author` option allows you to filter on a specific author, and the `--grep` option lets you search for keywords in the commit messages. (Note that if you want to specify both author and grep options, you have to add `--all-match` or the command will match commits with either.)
 
-Du kannst au&#223;erdem die Liste der Commits nach Suchkriterien filtern. Die `--author` Option erlaubt, nach einem bestimmten Autoren zu suchen, und die `--grep` Option nach Stichworten in den Commit Meldungen. (Wenn du sowohl nach dem Autor als auch nach Stichworten suchen willst, mu&#223;t du zus&#228;tzlich `--all-match` angeben - andernfalls zeigt der Befehl alle Commits, die das eine oder das andere Kriterium erf&#252;llen.)
+Du kannst au&#223;erdem die Liste der Commits nach Suchkriterien filtern. Die `--author` Option erlaubt, nach einem bestimmten Autoren zu suchen, und die `--grep` Option nach Stichworten in den Commit Meldungen. (Wenn du sowohl nach dem Autor als auch nach Stichworten suchen willst, mu&#223;t du zus&#228;tzlich `--all-match` angeben - andernfalls zeigt der Befehl alle Commits, die das eine _oder_ das andere Kriterium erf&#252;llen.)
 
 The last really useful option to pass to `git log` as a filter is a path. If you specify a directory or file name, you can limit the log output to commits that introduced a change to those files. This is always the last option and is generally preceded by double dashes (`--`) to separate the paths from the options.
 
@@ -834,7 +836,7 @@ Tabelle 2-3 zeigt diese und einige weitere, &#252;bliche Optionen:
 
 For example, if you want to see which commits modifying test files in the Git source code history were committed by Junio Hamano and were not merges in the month of October 2008, you can run something like this:
 
-Wenn du bespielsweise sehen willst, welche Commits den Tests im Git Quelltext von Junio Hamano im Oktober 2008 angelegt wurden und keine Merges (xxx) waren, kannst du folgendes tun:
+Wenn du bespielsweise sehen willst, welche Commits den Tests im Git Quelltext von Junio Hamano im Oktober 2008 angelegt wurden _und_ keine Merges waren, kannst du folgendes tun:
 
 	$ git log --pretty=&quot;%h:%s&quot; --author=gitster --since=&quot;2008-10-01&quot; \
 	   --before=&quot;2008-11-01&quot; --no-merges -- t/
@@ -847,7 +849,7 @@ Wenn du bespielsweise sehen willst, welche Commits den Tests im Git Quelltext vo
 
 Of the nearly 20,000 commits in the Git source code history, this command shows the 6 that match those criteria.
 
-Von etwa 20.000 Commits in der Git Quellcode Historie zeigt dieser Befehl nur 6 Commits, die diesen Kriterien entsprechen.
+Aus etwa 20.000 Commits in der Git Quellcode Historie filtert dieser Befehl gerade einmal 6 Commits heraus, die diesen Kriterien entsprechen.
 
 ### Using a GUI to Visualize History ###
 
@@ -855,7 +857,7 @@ Von etwa 20.000 Commits in der Git Quellcode Historie zeigt dieser Befehl nur 6
 
 If you like to use a more graphical tool to visualize your commit history, you may want to take a look at a Tcl/Tk program called gitk that is distributed with Git. Gitk is basically a visual `git log` tool, and it accepts nearly all the filtering options that `git log` does. If you type gitk on the command line in your project, you should see something like Figure 2-2.
 
-Wenn du lieber eine grafische Oberfl&#228;che (xxx) verwenden willst, um die Commit Historie anzuzeigen, kannst du die das Tcl/Tk Programm `gitk` ausprobieren, das mit Git ausgeliefert wird. `gitk` ist im wesentlichen eine grafische Version von `git log` und akzeptiert fast alle Filteroptionen, die `git log` auch akzeptiert. Wenn du `gitk` in einem Projekt ausf&#252;hrst, siehst du etwas wie:
+Wenn dir eine grafische Darstellung lieber ist, um die Commit Historie anzuzeigen, kannst du die das Tcl/Tk Programm `gitk` ausprobieren, das mit Git ausgeliefert wird. `gitk` ist im wesentlichen eine grafische Version von `git log` und akzeptiert fast alle Filteroptionen, die `git log` auch akzeptiert. Wenn du `gitk` in einem Projekt ausf&#252;hrst, siehst du etwas wie:
 
 Insert 18333fig0202.png 
 Figure 2-2. The gitk history visualizer
@@ -864,7 +866,7 @@ Bild 2-2. Die gitk Oberfl&#228;che
 
 You can see the commit history in the top half of the window along with a nice ancestry graph. The diff viewer in the bottom half of the window shows you the changes introduced at any commit you click.
 
-Du siehst die Commit Historie in der oberen H&#228;lfte des Fensters zusammen mit einem Graphen, der die Branches und Merges anzeigt. Die Diff Anzeige in der unteren H&#228;lfte des Fensters zeigt die jeweiligen &#196;nderungen, wenn du auf einen Commit klickst.
+Die Commit Historie wird in der oberen H&#228;lfte des Fensters dargestellt, zusammen mit einem Graphen, der die Branches und Merges zeigt. Wenn du einen Commit anklickst, zeigt die Diff Anzeige in der unteren H&#228;lfte des Fensters die jeweiligen &#196;nderungen in diesem Commit.
 
 ## Undoing Things ##
 
@@ -872,7 +874,7 @@ Du siehst die Commit Historie in der oberen H&#228;lfte des Fensters zusammen mit ei
 
 At any stage, you may want to undo something. Here, we&#8217;ll review a few basic tools for undoing changes that you&#8217;ve made. Be careful, because you can&#8217;t always undo some of these undos. This is one of the few areas in Git where you may lose some work if you do it wrong.
 
-Es kommt immer wieder mal vor, da&#223; man &#196;nderungen r&#252;ckg&#228;ngig machen will. Im Folgenden gehen wir auf einige grundlegende M&#246;glichkeiten dazu ein. Sei allerdings vorsichtig damit, denn du kannst nicht immer alles wieder herstellen, was du r&#252;ckg&#228;ngig gemacht hast. Dies ist eine der wenigen Situationen in Git, in denen man Daten verlieren kann, wenn man es falsch macht.
+Es kommt immer wieder mal vor, da&#223; du &#196;nderungen r&#252;ckg&#228;ngig machen willst. Im Folgenden gehen wir auf einige grundlegende M&#246;glichkeiten dazu ein. Sei allerdings vorsichtig damit, denn du kannst nicht immer alles wieder herstellen, was du r&#252;ckg&#228;ngig gemacht hast. Dies ist eine der wenigen Situationen in Git, in denen man Daten verlieren kann, wenn man es falsch macht.
 
 ### Changing Your Last Commit ###
 
@@ -880,21 +882,21 @@ Es kommt immer wieder mal vor, da&#223; man &#196;nderungen r&#252;ckg&#228;ngig machen will. Im
 
 One of the common undos takes place when you commit too early and possibly forget to add some files, or you mess up your commit message. If you want to try that commit again, you can run commit with the `--amend` option:
 
-Manchmal hat man einen Commit zu fr&#252;h angelegt und m&#246;glicherweise vergessen, einige Dateien hinzuzuf&#252;gen, oder eine falsche Commit Meldung verwendet. Wenn du den letzten Commit korrigieren willst, kannst du `git commit` mit der `--amend` Option verwenden:
+Manchmal hat man einen Commit zu fr&#252;h angelegt und m&#246;glicherweise vergessen, einige Dateien hinzuzuf&#252;gen, oder eine falsche Commit Meldung verwendet. Wenn du den letzten Commit korrigieren willst, kannst du dazu `git commit` zusammen mit der `--amend` Option verwenden:
 
 	$ git commit --amend
 
 This command takes your staging area and uses it for the commit. If you&#8217;ve have made no changes since your last commit (for instance, you run this command it immediately after your previous commit), then your snapshot will look exactly the same and all you&#8217;ll change is your commit message.
 
-Dieser Befehl verwendet deine Staging Area f&#252;r den Commit. Wenn du seit dem letzten Commit keine &#196;nderungen vorgenommen hast (z.B. wenn du den Befehl unmittelbar nach einem Commit ausf&#252;hrst), wird der Snapshot exakt genauso aussehen wie der vorherige - alles, was du dann &#228;nderst, ist die Commit message (xxx und/oder author, committer, etc?)
+Dieser Befehl verwendet deine Staging Area f&#252;r den Commit. Wenn du seit dem letzten Commit keine &#196;nderungen vorgenommen hast (z.B. wenn du den Befehl unmittelbar nach einem Commit ausf&#252;hrst), wird der Snapshot exakt genauso aussehen wie der vorherige - alles, was du dann &#228;nderst, ist die Commit message.
 
 The same commit-message editor fires up, but it already contains the message of your previous commit. You can edit the message the same as always, but it overwrites your previous commit.
 
-Der Texteditor startet wie &#252;blich, aber diesmal enth&#228;lt er bereits die Commit Meldung aus dem vorherigen Commit. Du kannst die Meldung wie &#252;blich bearbeiten und die vorherige Meldung dadurch &#252;berschreiben.
+Der Texteditor startet wie &#252;blich, aber diesmal enth&#228;lt er bereits die Meldung aus dem vorherigen Commit. Du kannst diese Meldung wie &#252;blich bearbeiten, speichern und die vorherige Meldung dadurch &#252;berschreiben.
 
 As an example, if you commit and then realize you forgot to stage the changes in a file you wanted to add to this commit, you can do something like this:
 
-Wenn du beispielsweise einen Commit angelegst und feststellst, da&#223; du zuvor vergessen hast die &#196;nderungen in einer bestimmten Datei zur Staging Area hinzuzuf&#252;gen, kannst du folgendes tun:
+Wenn du beispielsweise einen Commit angelegt hast und dann feststellst, da&#223; du zuvor vergessen hast, die &#196;nderungen in einer bestimmten Datei zur Staging Area hinzuzuf&#252;gen, kannst du folgendes tun:
 
 	$ git commit -m 'initial commit'
 	$ git add forgotten_file
@@ -902,7 +904,7 @@ Wenn du beispielsweise einen Commit angelegst und feststellst, da&#223; du zuvor ver
 
 All three of these commands end up with a single commit &#8212; the second command replaces the results of the first.
 
-Diesen drei Befehlen legen einen einzigen neuen Commit an - der letzte Befehl ersetzt das Ergebnis des ersten Befehls.
+Diese drei Befehle legen einen einzigen neuen Commit an - der letzte Befehl ersetzt dabei das Ergebnis des ersten Befehls.
 
 ### Unstaging a Staged File ###
 
@@ -910,7 +912,7 @@ Diesen drei Befehlen legen einen einzigen neuen Commit an - der letzte Befehl er
 
 The next two sections demonstrate how to wrangle your staging area and working directory changes. The nice part is that the command you use to determine the state of those two areas also reminds you how to undo changes to them. For example, let&#8217;s say you&#8217;ve changed two files and want to commit them as two separate changes, but you accidentally type `git add *` and stage them both. How can you unstage one of the two? The `git status` command reminds you:
 
-Die n&#228;chsten zwei Abschnitte gehen darauf ein, wie du &#196;nderungen in der Staging Area und dem Arbeitsverzeichnis verwalten (xxx wrangle xxx) kannst. Praktischerweise ist der Befehl, den du verwendest, um den Status dieser beiden Bereiche zu &#252;berpr&#252;fen, zugleich auch eine Eselsbr&#252;cke daf&#252;r, wie du &#196;nderungen r&#252;ckg&#228;ngig machen kanst. Nehmen wir beispielsweise an, du hast zwei Dateien ge&#228;ndert und willst sie als zwei seperate Commits anlegen, du hast aber versehentlich `git add *` ausgef&#252;hrt und damit beide zur Staging Area hinzugef&#252;gt. Wie kannst du jetzt eine der beiden &#196;nderungen wieder aus der Staging Area nehmen? Der `git status` Befehl gibt dir einen Hinweis darauf:
+Die n&#228;chsten zwei Abschnitte gehen darauf ein, wie du &#196;nderungen in der Staging Area und dem Arbeitsverzeichnis verwalten (xxx wrangle xxx) kannst. Praktischerweise liefert dir der Befehl `git status`, den du verwendest, um den Status dieser beiden Bereiche zu &#252;berpr&#252;fen, zugleich auch eine Erinnerungshilfe daf&#252;r, wie du &#196;nderungen r&#252;ckg&#228;ngig machen kanst. Nehmen wir beispielsweise an, du hast zwei Dateien ge&#228;ndert und willst sie als zwei seperate Commits anlegen, du hast aber versehentlich `git add *` ausgef&#252;hrt und damit beide zur Staging Area hinzugef&#252;gt. Wie kannst du jetzt eine der beiden &#196;nderungen wieder aus der Staging Area nehmen? `git status` gibt dir einen Hinweis:
 
 	$ git add .
 	$ git status
@@ -924,7 +926,7 @@ Die n&#228;chsten zwei Abschnitte gehen darauf ein, wie du &#196;nderungen in der Stagin
 
 Right below the &#8220;Changes to be committed&#8221; text, it says use `git reset HEAD &lt;file&gt;...` to unstage. So, let&#8217;s use that advice to unstage the benchmarks.rb file:
 	
-Direkt unter der &#220;berschrift &quot;Changes to be committed&quot; findest du den Hinweis `git reset HEAD &lt;file&gt;...` &quot;to unstage&quot;, d.h. &quot;aus der Staging Area zu nehmen&quot;. Verwenden wir also diesen Befehl, um die &#196;nderungen an der Datei benchmarks.rb aus der Staging Area zu nehmen:
+Direkt unter der &#220;berschrift &quot;Changes to be committed&quot; findest du den Hinweis `git reset HEAD &lt;file&gt;...` &quot;to unstage&quot;, d.h. &quot;aus der Staging Area zu entfernen&quot;. Verwenden wir also diesen Befehl, um die &#196;nderungen an der Datei benchmarks.rb aus der Staging Area zu nehmen:
 
 	$ git reset HEAD benchmarks.rb 
 	benchmarks.rb: locally modified
@@ -944,7 +946,7 @@ Direkt unter der &#220;berschrift &quot;Changes to be committed&quot; findest du den Hinweis `
 
 The command is a bit strange, but it works. The benchmarks.rb file is modified but once again unstaged.
 
-Der Befehl liest sich zun&#228;chst etwas merkw&#252;rdig, aber wie du siehst, funktioniert er. Die Datei benchmarks.rb ist jetzt ge&#228;ndert, aber nicht in der Staging Area.
+Der Befehl liest sich zun&#228;chst vielleicht etwas merkw&#252;rdig, aber wie du siehst, funktioniert er. Die Datei benchmarks.rb ist jetzt ge&#228;ndert, aber nicht in der Staging Area.
 
 ### Unmodifying a Modified File ###
 
@@ -952,7 +954,7 @@ Der Befehl liest sich zun&#228;chst etwas merkw&#252;rdig, aber wie du siehst, funktioni
 
 What if you realize that you don&#8217;t want to keep your changes to the benchmarks.rb file? How can you easily unmodify it &#8212; revert it back to what it looked like when you last committed (or initially cloned, or however you got it into your working directory)? Luckily, `git status` tells you how to do that, too. In the last example output, the unstaged area looks like this:
 
-Was, wenn wir aber die &#196;nderungen an der Datei benchmarks.rb &#252;berhaupt nicht beibehalten wollen? D.h., du willst sie in den Zustand zur&#252;ckversetzen, in dem sie sich befand, als du den letzten Commit angelegt hast (oder das Repository geklont hast). Das ist einfach, und gl&#252;cklicherweise gibt der `git status` Befehl ebenfalls bereits einen Hinweis darauf. Die obige Ausgabe enth&#228;lt den folgenden Text:
+Was aber, wenn du die &#196;nderungen an der Datei benchmarks.rb &#252;berhaupt nicht beibehalten willst? D.h., wenn du sie in den Zustand zur&#252;ckversetzen willst, in dem sie sich befand, als du den letzten Commit angelegt hast (oder das Repository geklont hast). Das ist einfach, und gl&#252;cklicherweise gibt der `git status` Befehl ebenfalls bereits einen Hinweis darauf. Die obige Ausgabe enth&#228;lt den folgenden Text:
 
 	# Changed but not updated:
 	#   (use &quot;git add &lt;file&gt;...&quot; to update what will be committed)
@@ -963,7 +965,7 @@ Was, wenn wir aber die &#196;nderungen an der Datei benchmarks.rb &#252;berhaupt nicht b
 
 It tells you pretty explicitly how to discard the changes you&#8217;ve made (at least, the newer versions of Git, 1.6.1 and later, do this &#8212; if you have an older version, we highly recommend upgrading it to get some of these nicer usability features). Let&#8217;s do what it says:
 
-Das sagt ziemlich klar, was wir zu tun haben, wenn wir die &#196;nderungen an der Datei verwerfen wollen (genauer gesagt, Git tut dies seit der Version 1.6.1 - wenn du eine &#228;ltere Version hast, ist es empfehlenswert, sie zu aktualisieren). Also, tun wir das:
+Das sagt ziemlich klar, was wir zu tun haben, wenn wir die &#196;nderungen an der Datei verwerfen wollen (genauer gesagt, Git tut dies seit der Version 1.6.1 - wenn du eine &#228;ltere Version hast, empfehlen wir dir, sie zu aktualisieren). Also, tun wir das:
 
 	$ git checkout -- benchmarks.rb
 	$ git status
@@ -976,28 +978,28 @@ Das sagt ziemlich klar, was wir zu tun haben, wenn wir die &#196;nderungen an der Da
 
 You can see that the changes have been reverted. You should also realize that this is a dangerous command: any changes you made to that file are gone &#8212; you just copied another file over it. Don&#8217;t ever use this command unless you absolutely know that you don&#8217;t want the file. If you just need to get it out of the way, we&#8217;ll go over stashing and branching in the next chapter; these are generally better ways to go.
 
-Du siehst, da&#223; die &#196;nderungen r&#252;ckg&#228;ngig gemacht wurden: sie taucht nicht mehr in der Liste der ge&#228;nderten Dateien auf. Sei dir bewu&#223;t, da&#223; dies ein potentiell gef&#228;hrlicher Befehl ist, insofern du &#196;nderungen an einer Datei vollst&#228;ndig verwirfst. Es ist also angebracht, ihn nicht zu verwenden, wenn du nicht absolut genau wei&#223;t, ob du die &#196;nderungen noch brauchst. F&#252;r Situationen, in denen Du eine &#196;nderung lediglich vorl&#228;ufig aus dem Weg haben willst, werden wir im n&#228;chsten Kapitel noch auf Stashing und Branching eingehen - die dazu besser geeignet sind.
+Die &#196;nderung wurde also r&#252;ckg&#228;ngig gemacht: sie taucht nicht mehr in der Liste der ge&#228;nderten Dateien auf. Sei dir bewu&#223;t, da&#223; dieser Befehl potentiell gef&#228;hrlich ist, insofern er &#196;nderungen an einer Datei vollst&#228;ndig verwirft. Es ist also ratsam, ihn nur dann zu verwenden, wenn du dir absolut sicher bist, da&#223; du die &#196;nderungen nicht mehr brauchst. F&#252;r Situationen, in denen Du eine &#196;nderung lediglich vorl&#228;ufig aus dem Weg r&#228;umen willst, werden wir im n&#228;chsten Kapitel noch auf Stashing und Branching eingehen - die dazu besser geeignet sind.
 
 Remember, anything that is committed in Git can almost always be recovered. Even commits that were on branches that were deleted or commits that were overwritten with an `--amend` commit can be recovered (see Chapter 9 for data recovery). However, anything you lose that was never committed is likely never to be seen again.
 
-Beachte, da&#223; was auch immer jemals in einem Commit in Git enthalten war, fast immer wieder hergestellt werden kann. Selbst Commits, die sich in gel&#246;schten Branches befanden, oder Commits, die mit einem `--amend` Commit &#252;berschrieben wurden, k&#246;nnen wieder hergestellt werden. (Siehe Kapitel 9 f&#252;r Datenrettung.) Allerdings wirst du &#196;nderungen, die es nie in einen Commit geschafft haben, wahrscheinlich auch nie wieder bekommen k&#246;nnen. (xxx Mantra: commit early and often xxx)
+Beachte, da&#223; was auch immer jemals in einem Commit in Git enthalten war, fast immer wieder hergestellt werden kann. Selbst Commits, die sich in gel&#246;schten Branches befanden, oder Commits, die mit einem `--amend` Commit &#252;berschrieben wurden, k&#246;nnen wieder hergestellt werden (siehe Kapitel 9 f&#252;r Datenrettung). Allerdings wirst du &#196;nderungen, die es nie in einen Commit geschafft haben, wahrscheinlich auch nie wieder bekommen k&#246;nnen. (xxx Mantra: commit early and often xxx)
 
 ## Working with Remotes ##
 
-## Mit entfernten Repositories arbeiten ##
+## Mit externen Repositories arbeiten ##
 
 To be able to collaborate on any Git project, you need to know how to manage your remote repositories. Remote repositories are versions of your project that are hosted on the Internet or network somewhere. You can have several of them, each of which generally is either read-only or read/write for you. Collaborating with others involves managing these remote repositories and pushing and pulling data to and from them when you need to share work.
 Managing remote repositories includes knowing how to add remote repositories, remove remotes that are no longer valid, manage various remote branches and define them as being tracked or not, and more. In this section, we&#8217;ll cover these remote-management skills.
 
-Um mit anderen via Git zusammenarbeiten zu k&#246;nnen, mu&#223;t du wissen, wie du auf entfernte Repositories zugreifen kannst. Entfernte Repositories sind Versionen deines Projektes, die im Internet oder irgendwo in einem anderen Netzwerk gespeichert sind. Du kannst mehrere solcher Repositories haben und du kannst jedes davon entweder nur lesen oder lesen und schreiben. Mit anderen via Git zusammenzuarbeiten bedeutet, solche Repositories zu verwalten und Daten aus ihnen herunter- oder heraufzuladen, um deine Arbeit anderen verf&#252;gbar zu machen. Entfernte Repositories zu verwalten erfordert zu wissen, wie man sie anzulegt und wieder entfernt, wenn sie nicht mehr verwendet werden, wie man entfernte Branches verwalten und verfolgen kann, und mehr. In diesem Kapitel werden wir auf diese Aufgaben eingehen.
+Um mit anderen via Git zusammenarbeiten zu k&#246;nnen, mu&#223;t du wissen, wie du auf externe (&quot;remote&quot;) Repositories zugreifen kannst. Externe Repositories sind Versionen deines Projektes, die im Internet oder irgendwo in einem anderen Netzwerk gespeichert sind. Du kannst mehrere solcher Repositories haben und du kannst jedes davon entweder nur lesen oder lesen und schreiben. Mit anderen via Git zusammenzuarbeiten impliziert, solche Repositories zu verwalten und Daten aus ihnen herunter- oder heraufzuladen, um deine Arbeit f&#252;r andere verf&#252;gbar zu machen. Um externe Repositories zu verwalten, mu&#223; man wissen, wie man sie anlegt und wieder entfernt, wenn sie nicht mehr verwendet werden, wie man externe Branches verwalten und nachverfolgen kann, und mehr. In diesem Kapitel werden wir auf diese Aufgaben eingehen.
 
 ### Showing Your Remotes ###
 
-### Entfernte Repositories anzeigen ###
+### Externe Repositories anzeigen ###
 
 To see which remote servers you have configured, you can run the git remote command. It lists the shortnames of each remote handle you&#8217;ve specified. If you&#8217;ve cloned your repository, you should at least see origin &#8212; that is the default name Git gives to the server you cloned from:
 
-Der `git remote` Befehl zeigt dir an, welche entfernten Server du f&#252;r dein Projekt lokal konfiguriert hast, und listet die Kurzbezeichnungen f&#252;r jedes entfernte Repository auf. Wenn du ein Repository geklont hast, solltest du mindestens `origin` sehen - welches der Standardname ist, den Git f&#252;r denjenigen Server vergibt, von dem Du klonst:
+Der `git remote` Befehl zeigt dir an, welche externen Server du f&#252;r dein Projekt lokal konfiguriert hast, und listet die Kurzbezeichnungen f&#252;r jedes externe Repository auf. Wenn du ein Repository geklont hast, solltest du mindestens `origin` sehen - welches der Standardname ist, den Git f&#252;r denjenigen Server vergibt, von dem Du klonst:
 
 	$ git clone git://github.com/schacon/ticgit.git
 	Initialized empty Git repository in /private/tmp/ticgit/.git/
@@ -1019,7 +1021,7 @@ Du kannst au&#223;erdem die Option `-v` verwenden, was f&#252;r jeden Kurznamen auch die
 
 If you have more than one remote, the command lists them all. For example, my Grit repository looks something like this.
 
-Wenn du mehr als ein entferntes Repository konfiguriert hast, zeigt der Befehl alle an. F&#252;r mein eigenes Grit Repository sieht das beispielsweise wie folgt aus:
+Wenn du mehr als ein externes Repository konfiguriert hast, zeigt der Befehl alle an. F&#252;r mein eigenes Grit Repository sieht das beispielsweise wie folgt aus:
 
 	$ cd grit
 	$ git remote -v
@@ -1035,11 +1037,11 @@ D.h., mein lokales Repository kennt die Repositories von all diesen Leuten und i
 
 ### Adding Remote Repositories ###
 
-### Entfernte Repositories hinzuf&#252;gen ###
+### Externe Repositories hinzuf&#252;gen ###
 
 I&#8217;ve mentioned and given some demonstrations of adding remote repositories in previous sections, but here is how to do it explicitly. To add a new remote Git repository as a shortname you can reference easily, run `git remote add [shortname] [url]`:
 
-Ich habe in vorangegangenen Kapiteln schon Beispiele daf&#252;r gegeben, wie man ein entferntes Repository hinzuf&#252;gen kann, aber ich will noch einmal explizit darauf eingehen. Um ein neues entferntes Repository mit einem Kurznamen hinzuzuf&#252;gen, den du dir leicht merken kannst, f&#252;hrst du den Befehl `git remote add [shortname] [url]` aus:
+Ich habe in vorangegangenen Kapiteln schon Beispiele daf&#252;r gegeben, wie man ein externes Repository hinzuf&#252;gen kann, aber ich will noch einmal explizit darauf eingehen. Um ein neues externes Repository mit einem Kurznamen hinzuzuf&#252;gen, den du dir leicht merken kannst, f&#252;hrst du den Befehl `git remote add [shortname] [url]` aus:
 
 	$ git remote
 	origin
@@ -1050,7 +1052,7 @@ Ich habe in vorangegangenen Kapiteln schon Beispiele daf&#252;r gegeben, wie man ein
 
 Now you can use the string pb on the command line in lieu of the whole URL. For example, if you want to fetch all the information that Paul has but that you don&#8217;t yet have in your repository, you can run git fetch pb:
 
-Jetzt kannst du 
+Jetzt kannst du den Namen &quot;pb&quot; anstelle der vollst&#228;ndingen URL in verschiedenen Befehlen verwenden. Wenn du bespielsweise alle Informationen, die in Paul's, aber noch nicht in deinem eigenen Repository verf&#252;gbar sind, herunterladen willst, kannst du den Befehl `git fetch pb` verwenden:
 
 	$ git fetch pb
 	remote: Counting objects: 58, done.
@@ -1063,30 +1065,52 @@ Jetzt kannst du
 
 Paul&#8217;s master branch is accessible locally as `pb/master` &#8212; you can merge it into one of your branches, or you can check out a local branch at that point if you want to inspect it.
 
+Paul's master Branch ist jetzt lokal auf deinem Rechner als `pb/master` verf&#252;gbar - du kannst ihn mit einem deiner eigenen Branches zusammenf&#252;hren oder auf einen lokalen Branch wechseln, um damit zu arbeiten.
+
 ### Fetching and Pulling from Your Remotes ###
 
+### Aus externen Repositories herunterladen und ziehen ###
+
 As you just saw, to get data from your remote projects, you can run
 
+Wie du gerade gesehen hast, kannst du Daten aus externen Repositories herunterladen, indem du den Befehl verwendest:
+
 	$ git fetch [remote-name]
 
 The command goes out to that remote project and pulls down all the data from that remote project that you don&#8217;t have yet. After you do this, you should have references to all the branches from that remote, which you can merge in or inspect at any time. (We&#8217;ll go over what branches are and how to use them in much more detail in Chapter 3.)
 
+Dieser Befehl l&#228;dt alle Daten aus dem externen Repository herunter, die noch nicht auf deinem Rechner verf&#252;gbar sind. Danach kennt dein eigenes Repository Verweise auf alle Branches in dem externen Repository, die du jederzeit mit deinen eigenen Branches zusammenf&#252;hren oder lesen kannst. (Wir werden in Kapitel 3 detaillierter darauf eingehen, was genau Branches sind.)
+
 If you cloned a repository, the command automatically adds that remote repository under the name origin. So, `git fetch origin` fetches any new work that has been pushed to that server since you cloned (or last fetched from) it. It&#8217;s important to note that the fetch command pulls the data to your local repository &#8212; it doesn&#8217;t automatically merge it with any of your work or modify what you&#8217;re currently working on. You have to merge it manually into your work when you&#8217;re ready.
 
+Wenn du ein Repository geklont hast, legt der Befehl automatisch einen Verweis auf dieses Repository unter dem Namen `origin` an. D.h. `git fetch origin` l&#228;dt alle Neuigkeiten herunter, die in dem externen Repository von anderen hinzugef&#252;gt wurden, seit du es geklont hast (oder zuletzt `git fetch` ausgef&#252;hrt hast). Es ist wichtig, zu verstehen, da&#223; der `git fetch` Befehl Daten lediglich in dein lokale Repository l&#228;dt. Er f&#252;hrt sich mit deinen eigenen Commits in keiner Weise zusammen oder modifiziert, woran du gerade arbeitest. D.h. du mu&#223;t die heruntergeladenen &#196;nderungen anschlie&#223;end selbst manuell mit deinen eigenen zusammef&#252;hren, wenn du das willst.
+
 If you have a branch set up to track a remote branch (see the next section and Chapter 3 for more information), you can use the `git pull` command to automatically fetch and then merge a remote branch into your current branch. This may be an easier or more comfortable workflow for you; and by default, the `git clone` command automatically sets up your local master branch to track the remote master branch on the server you cloned from (assuming the remote has a master branch). Running `git pull` generally fetches data from the server you originally cloned from and automatically tries to merge it into the code you&#8217;re currently working on.
 
+Wenn du allerdings einen Branch so aufgesetzt hast, da&#223; er einem externen Branch &quot;folgt&quot; (also einen &quot;Tracking Branch&quot;, wir werden im n&#228;chsten Abschnitt und in Kapitel 3 noch genauer darauf eingehen), dann kannst du den Befehl `git pull` verwenden, um automatisch neue Daten herunterzuladen *und* den externen Branch gleichzeitig mit dem aktuellen, lokalen Branch zusammenzuf&#252;hren. Das ist oft die bequemere Arbeitsweise. `git clone` setzt deinen lokalen master Branch deshalb standardm&#228;&#223;ig so auf, da&#223; er dem externen master Branch des geklonten Repositories folgt (sofern das externe Repository einen master Branch hat). Wenn du dann `git pull` ausf&#252;hrst, wird Git die neuen Commits aus dem externen Repository holen und versuchen, sie automatisch mit dem Code zusammenzuf&#252;hren, an dem du gerade arbeitest.
+
 ### Pushing to Your Remotes ###
 
+### &#196;nderungen in ein externes Repository hochladen ###
+
 When you have your project at a point that you want to share, you have to push it upstream. The command for this is simple: `git push [remote-name] [branch-name]`. If you want to push your master branch to your `origin` server (again, cloning generally sets up both of those names for you automatically), then you can run this to push your work back up to the server:
 
+Wenn du mit deinem Projekt an einen Punkt gekommen bist, an dem du es anderen zur Verf&#252;gung stellen willst, kannst du deine &#196;nderungen in ein gemeinsam genutztes Repository hochladen (&quot;pushen&quot;). Der Befehl daf&#252;r ist einfach: `git push [remote-name] [branch-name]`. Wenn du deinen master Branch auf den `origin` Server hochladen willst (noch einmal, wenn du ein Repository klonst, setzt Git diesen Namen automatisch f&#252;r dich), dann kannst du diesen Befehl verwenden:
+
 	$ git push origin master
 
 This command works only if you cloned from a server to which you have write access and if nobody has pushed in the meantime. If you and someone else clone at the same time and they push upstream and then you push upstream, your push will rightly be rejected. You&#8217;ll have to pull down their work first and incorporate it into yours before you&#8217;ll be allowed to push. See Chapter 3 for more detailed information on how to push to remote servers.
 
+Das funktioniert nur dann, wenn du Schreibrechte f&#252;r das jeweilige Repository hast und niemand anders in der Zwischenzeit irgendwelche &#196;nderungen hochgeladen hat. Wenn zwei Leute ein Repository zur gleichen Zeit klonen, dann zuerst der eine seine &#196;nderungen hochl&#228;dt und der zweite anschlie&#223;end versucht, das gleiche zu tun, dann wird sein Versuch korrekterweise abgewiesen. In dieser Situation mu&#223; man neue &#196;nderungen zun&#228;chst herunterladen und mit seinen eigenen zusammenf&#252;hren, um sie dann erst hochzuladen. In Kapitel 3 gehen wir noch einmal ausf&#252;hrlicher darauf ein.
+
 ### Inspecting a Remote ###
 
+### Ein externes Repository inspizieren ###
+
 If you want to see more information about a particular remote, you can use the `git remote show [remote-name]` command. If you run this command with a particular shortname, such as `origin`, you get something like this:
 
+Wenn du etwas &#252;ber ein bestimmtes, externes Repository wissen willst, kannst du den Befehl `git remote show [remote-name]` verwenden. Wenn du diesen Befehl mit dem entsprechenden Kurznamen, z.B. `origin` verwendest, erh&#228;ltst du etwas wie:
+
 	$ git remote show origin
 	* remote origin
 	  URL: git://github.com/schacon/ticgit.git
@@ -1098,8 +1122,12 @@ If you want to see more information about a particular remote, you can use the `
 
 It lists the URL for the remote repository as well as the tracking branch information. The command helpfully tells you that if you&#8217;re on the master branch and you run `git pull`, it will automatically merge in the master branch on the remote after it fetches all the remote references. It also lists all the remote references it has pulled down.
 
+Das zeigt dir die URL f&#252;r das externe Repository, die Tracking Information (xxx) f&#252;r Branches und welcher Branch aus dem externen Repository mit deinem eigenen Master zusammengef&#252;hrt wird, wenn du `git pull` ausf&#252;hrst. 
+
 That is a simple example you&#8217;re likely to encounter. When you&#8217;re using Git more heavily, however, you may see much more information from `git remote show`:
 
+Dies ist ein eher einfaches Beispiel, das dir fr&#252;her oder sp&#228;ter so &#228;hnlich &#252;ber den Weg laufen wird. Wenn du Git aber t&#228;glich verwendest, erh&#228;ltst du mit `git remote show` sehr viel mehr Informationen:
+
 	$ git remote show origin
 	* remote origin
 	  URL: git@github.com:defunkt/github.git
@@ -1124,10 +1152,16 @@ That is a simple example you&#8217;re likely to encounter. When you&#8217;re using Git m
 
 This command shows which branch is automatically pushed when you run `git push` on certain branches. It also shows you which remote branches on the server you don&#8217;t yet have, which remote branches you have that have been removed from the server, and multiple branches that are automatically merged when you run `git pull`.
 
+Dieser Befehl zeigt, welcher Branch automatisch hochgeladen werden wird, wenn du `git push` auf bestimmten Branches ausf&#252;hrst. Er zeigt au&#223;erdem, welche Branches es im externen Repository gibt, die du selbst noch nicht hast, welche Branches dort gel&#246;scht wurden, und Branches, die automatisch mit lokalen Branches zusammengef&#252;hrt werden, wenn du `git pull` ausf&#252;hrst.
+
 ### Removing and Renaming Remotes ###
 
+### Verweise auf externe Repositories l&#246;schen und umbenennen ###
+
 If you want to rename a reference, in newer versions of Git you can run `git remote rename` to change a remote&#8217;s shortname. For instance, if you want to rename `pb` to `paul`, you can do so with `git remote rename`:
 
+Wenn du eine Referenz auf ein externes Repository umbenennen willst, kannst du in neueren Git Versionen den Befehl `git remote rename` verwenden, um den Kurznamen zu &#228;ndern. Wenn du beispielsweise `pb` in `paul` umbenennen willst, lautet der Befehl:
+
 	$ git remote rename pb paul
 	$ git remote
 	origin
@@ -1135,28 +1169,44 @@ If you want to rename a reference, in newer versions of Git you can run `git rem
 
 It&#8217;s worth mentioning that this changes your remote branch names, too. What used to be referenced at `pb/master` is now at `paul/master`.
 
+Beachte dabei, da&#223; dies deine Branch Namen f&#252;r externe Branches ebenfalls &#228;ndert. Der Branch, der zuvor mit `pb/master` referenziert werden konnte, hei&#223;t jetzt `paul/master`.
+
 If you want to remove a reference for some reason &#8212; you&#8217;ve moved the server or are no longer using a particular mirror, or perhaps a contributor isn&#8217;t contributing anymore &#8212; you can use `git remote rm`:
 
+Wenn du eine Referenz aus irgendeinem Grund entfernen willst (z.B. weil du den Server umgezogen hast oder einen bestimmten Mirror nicht l&#228;nger verwendest, oder weil jemand vielleicht nicht l&#228;nger mitarbeitet), kannst du `git remote rm` verwenden:
+
 	$ git remote rm paul
 	$ git remote
 	origin
 
 ## Tagging ##
 
+## Tagging ##
+
 Like most VCSs, Git has the ability to tag specific points in history as being important. Generally, people use this functionality to mark release points (v1.0, and so on). In this section, you&#8217;ll learn how to list the available tags, how to create new tags, and what the different types of tags are.
 
+Wie die meisten anderen VCS kann Git bestimmte Punkte in der Historie als besonders wichtig markieren, also taggen. Normalerweise verwendet man diese Funktionalit&#228;t, um Release Versionen zu markieren (z.B. v1.0). In diesem Abschnitt gehen wir darauf ein, wie du die vorhandenen Tags anzuzeigen und neue Tags erstellen kannst, und worin die Unterschiede zwischen verschiedenen Typen von Tags bestehen.
+
 ### Listing Your Tags ###
 
+### Vorhandene Tags anzeigen ###
+
 Listing the available tags in Git is straightforward. Just type `git tag`:
 
+Um die in einem Repository vorhandenen Tags anzuzeigen, kannst den Befehl `git tag` ohne irgendwelche weiteren Optionen verwenden:
+
 	$ git tag
 	v0.1
 	v1.3
 
 This command lists the tags in alphabetical order; the order in which they appear has no real importance.
 
+Dieser Befehl listet die Tags in alphabetischer Reihenfolge auf.
+
 You can also search for tags with a particular pattern. The Git source repo, for instance, contains more than 240 tags. If you&#8217;re only interested in looking at the 1.4.2 series, you can run this:
 
+Du kannst auch nach Tags mit einem bestimmten Muster suchen. Das Git Quellcode Repository enth&#228;lt beispielsweise mehr als 240 Tags. Wenn du nur an denjenigen interessiert bist, die zur 1.4.2 Serie geh&#246;ren, kannst du folgendes tun:
+
 	$ git tag -l 'v1.4.2.*'
 	v1.4.2.1
 	v1.4.2.2
@@ -1165,12 +1215,20 @@ You can also search for tags with a particular pattern. The Git source repo, for
 
 ### Creating Tags ###
 
+### Neue Tags anlegen ###
+
 Git uses two main types of tags: lightweight and annotated. A lightweight tag is very much like a branch that doesn&#8217;t change &#8212; it&#8217;s just a pointer to a specific commit. Annotated tags, however, are stored as full objects in the Git database. They&#8217;re checksummed; contain the tagger name, e-mail, and date; have a tagging message; and can be signed and verified with GNU Privacy Guard (GPG). It&#8217;s generally recommended that you create annotated tags so you can have all this information; but if you want a temporary tag or for some reason don&#8217;t want to keep the other information, lightweight tags are available too.
 
+Git kennt im wesentlichen zwei Typen von Tags: leichte und kommentierte (xxx) (&quot;lightweight&quot; und &quot;annotated&quot;) Tags. Ein leichter Tag ist ein Branch, der sich niemals &#228;ndert - es ist lediglich ein Zeiger auf einen bestimmten Commit. Kommentierte Tags dagegen werden als vollwertige Objekte in der Git Datenbank gespeichert. Sie haben eine Checksumme, beinhalten Namen und E-Mail Adresse desjenigen, der den Tag angelegt hat, das jeweilige Datum sowie eine Meldung. Sie k&#246;nnen &#252;berdies mit GNU Privacy Guard (GPG) signiert und verifiziert werden. Generell empfiehlt sich deshalb, kommentierte Tags anzulegen. Wenn man aber aus irgendeinem Grund einen tempor&#228;ren Tag anlegen will, f&#252;r den all diese zus&#228;tzlichen Informationen nicht n&#246;tig sind, dann kann man auf leichte Tags zur&#252;ckgreifen.
+
 ### Annotated Tags ###
 
+### Kommentierte Tags (xxx) ###
+
 Creating an annotated tag in Git is simple. The easiest way is to specify `-a` when you run the `tag` command:
 
+Einen kommentierten Tag legst du an, indem du dem `git tag` Befehl die Option `-a` &#252;bergibst:
+
 	$ git tag -a v1.4 -m 'my version 1.4'
 	$ git tag
 	v0.1
@@ -1179,8 +1237,12 @@ Creating an annotated tag in Git is simple. The easiest way is to specify `-a` w
 
 The `-m` specifies a tagging message, which is stored with the tag. If you don&#8217;t specify a message for an annotated tag, Git launches your editor so you can type it in.
 
+Die Option `-m` gibt dabei wiederum die Meldung an, die zum Tag hinzugef&#252;gt wird. Wenn du keine Meldung angibst, startet Git wie &#252;blich deinen Editor, so da&#223; du eine Meldung eingeben kannst.
+
 You can see the tag data along with the commit that was tagged by using the `git show` command:
 
+`git show` zeigt dir dann folgenden Tag Daten zusammen mit dem jeweiligen Commit, auf den der Tag verweist:
+
 	$ git show v1.4
 	tag v1.4
 	Tagger: Scott Chacon &lt;schacon@gee-mail.com&gt;
@@ -1196,10 +1258,16 @@ You can see the tag data along with the commit that was tagged by using the `git
 
 That shows the tagger information, the date the commit was tagged, and the annotation message before showing the commit information.
 
+Die Ausgabe listet also zun&#228;chst die Informationen &#252;ber denjenigen, der den Tag angelegt hat, sowie die Tag Meldung und dann die Commit Informationen selbst.
+
 ### Signed Tags ###
 
+### Signierte Tags ###
+
 You can also sign your tags with GPG, assuming you have a private key. All you have to do is use `-s` instead of `-a`:
 
+Wenn du einen privaten GPG Schl&#252;ssel hast, kannst du deine Tags zus&#228;tzlich mit GPG signieren. Dazu verwendest du einfach die Option `-s` anstelle von `-a`:
+
 	$ git tag -s v1.5 -m 'my signed 1.5 tag'
 	You need a passphrase to unlock the secret key for
 	user: &quot;Scott Chacon &lt;schacon@gee-mail.com&gt;&quot;
@@ -1207,6 +1275,8 @@ You can also sign your tags with GPG, assuming you have a private key. All you h
 
 If you run `git show` on that tag, you can see your GPG signature attached to it:
 
+Wenn du jetzt `git show` auf diesen Tag anwendest, siehst du, da&#223; der Tag deine GPG Signatur kennt:
+
 	$ git show v1.5
 	tag v1.5
 	Tagger: Scott Chacon &lt;schacon@gee-mail.com&gt;
@@ -1229,10 +1299,16 @@ If you run `git show` on that tag, you can see your GPG signature attached to it
 
 A bit later, you&#8217;ll learn how to verify signed tags.
 
+Darauf, wie du signierte Tags verifizieren kannst, werden wir gleich noch eingehen.
+
 ### Lightweight Tags ###
 
+### Leichte Tags (xxx) ###
+
 Another way to tag commits is with a lightweight tag. This is basically the commit checksum stored in a file &#8212; no other information is kept. To create a lightweight tag, don&#8217;t supply the `-a`, `-s`, or `-m` option:
 
+Leichte Tags sind die zweite Form von Tags, die Git kennt. F&#252;r einen leichten Tag wird im wesentlichen die jeweilige Commit Checksumme, und sonst keine andere Information, in einer Datei gespeichert. Um einen leichten Tag anzulegen, verwendest du einfach keine der drei Optionen `-a`, `-s` und `-m`:
+
 	$ git tag v1.4-lw
 	$ git tag
 	v0.1
@@ -1243,6 +1319,8 @@ Another way to tag commits is with a lightweight tag. This is basically the comm
 
 This time, if you run `git show` on the tag, you don&#8217;t see the extra tag information. The command just shows the commit:
 
+Wenn du jetzt `git show` auf den Tag ausf&#252;hrst, siehst du keine der zus&#228;tzlichen Tag Informationen. Der Befehl zeigt einfach den jeweiligen Commit:
+
 	$ git show v1.4-lw
 	commit 15027957951b64cf874c3557a0f3547bd83b3ff6
 	Merge: 4a447f7... a6b4c97...
@@ -1253,8 +1331,12 @@ This time, if you run `git show` on the tag, you don&#8217;t see the extra tag infor
 
 ### Verifying Tags ###
 
+### Tags verifizieren ###
+
 To verify a signed tag, you use `git tag -v [tag-name]`. This command uses GPG to verify the signature. You need the signer&#8217;s public key in your keyring for this to work properly:
 
+Um einen signierten Tag zu verifizieren, kannst du `git tag -v [tag-name]` verwenden. Dieser Befehl verwendet GPG, um die Signatur mit Hilfe des &#246;ffentlichen Schl&#252;ssels des Signierenden zu verifizieren - weshalb du diesen Schl&#252;ssel in deinem Schl&#252;sselbund haben mu&#223;t:
+
 	$ git tag -v v1.4.2.1
 	object 883653babd8ee7ea23e6a5c392bb739348b1eb61
 	type commit
@@ -1271,14 +1353,20 @@ To verify a signed tag, you use `git tag -v [tag-name]`. This command uses GPG t
 
 If you don&#8217;t have the signer&#8217;s public key, you get something like this instead:
 
+Wenn du den &#246;ffentlichen Schl&#252;ssel des Signierenden nicht in deinem Schl&#252;sselbund hast, wirst du statt dessen eine Meldung sehen wie:
+
 	gpg: Signature made Wed Sep 13 02:08:25 2006 PDT using DSA key ID F3119B9A
 	gpg: Can't check signature: public key not found
 	error: could not verify the tag 'v1.4.2.1'
 
 ### Tagging Later ###
 
+### Nachtr&#228;glich taggen ###
+
 You can also tag commits after you&#8217;ve moved past them. Suppose your commit history looks like this:
 
+Du kannst Commits jederzeit taggen, auch lange Zeit nachdem sie angelegt wurden. Nehmen wir an, deine Commit Historie sieht wie folgt aus:
+
 	$ git log --pretty=oneline
 	15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch 'experiment'
 	a6b4c97498bd301d84096da251c98a07c7723e65 beginning write support
@@ -1293,10 +1381,14 @@ You can also tag commits after you&#8217;ve moved past them. Suppose your commit his
 
 Now, suppose you forgot to tag the project at v1.2, which was at the &quot;updated rakefile&quot; commit. You can add it after the fact. To tag that commit, you specify the commit checksum (or part of it) at the end of the command:
 
+Nehmen wir au&#223;erdem an, da&#223; du vergessen hast, Version v1.2 des Projektes zu taggen, und da&#223; dies der Commit &quot;updated rakefile&quot; gewesen ist. Du kannst diesen jetzt im Nachhinein taggen, indem du die Checksumme des Commits (oder einen Teil davon) am Ende des Befehls angibst:
+
 	$ git tag -a v1.2 9fceb02
 
 You can see that you&#8217;ve tagged the commit:
 
+Du siehst jetzt, da&#223; du einen Tag f&#252;r den Commit angelegt hast:
+
 	$ git tag 
 	v0.1
 	v1.2
@@ -1320,8 +1412,12 @@ You can see that you&#8217;ve tagged the commit:
 
 ### Sharing Tags ###
 
+### Tags hochladen (xxx) ###
+
 By default, the `git push` command doesn&#8217;t transfer tags to remote servers. You will have to explicitly push tags to a shared server after you have created them.  This process is just like sharing remote branches &#8211; you can run `git push origin [tagname]`.
 
+Der `git push` Befehl l&#228;dt Tags nicht von sich aus auf externe Server. Stattdessen mu&#223; Du Tags explizit auf einen externen Server hochladen, nachdem du sie angelegt hast. Der Vorgang ist derselbe wie mit Branches: du kannst den Befehl `git push origin [tagname]` verwenden.
+
 	$ git push origin v1.5
 	Counting objects: 50, done.
 	Compressing objects: 100% (38/38), done.
@@ -1332,6 +1428,8 @@ By default, the `git push` command doesn&#8217;t transfer tags to remote servers. Yo
 
 If you have a lot of tags that you want to push up at once, you can also use the `--tags` option to the `git push` command.  This will transfer all of your tags to the remote server that are not already there.
 
+Wenn du viele Tags auf einmal hochladen willst, kannst du dem `git push` Befehl au&#223;erdem die `--tags` Option &#252;bergeben und auf diese Weise s&#228;mtliche Tags auf den externen Server transferieren, die dort noch nicht bekannt sind.
+
 	$ git push origin --tags
 	Counting objects: 50, done.
 	Compressing objects: 100% (38/38), done.
@@ -1346,38 +1444,64 @@ If you have a lot of tags that you want to push up at once, you can also use the
 
 Now, when someone else clones or pulls from your repository, they will get all your tags as well.
 
+Wenn jetzt jemand anderes das Repository klont oder von dort aktualisiert, wird er all diese Tags ebenfalls erhalten.
+
 ## Tips and Tricks ##
 
+## Tipps und Tricks ###
+
 Before we finish this chapter on basic Git, a few little tips and tricks may make your Git experience a bit simpler, easier, or more familiar. Many people use Git without using any of these tips, and we won&#8217;t refer to them or assume you&#8217;ve used them later in the book; but you should probably know how to do them.
 
+Bevor wir an das Ende dieses Grundlagen Kapitels kommen, noch einige Tipps und Tricks, die dir den Umgang mit Git ein bi&#223;chen vereinfachen k&#246;nnen. Du kannst Git nat&#252;rlich einsetzen, ohne diese Tipps anzuwenden, und wir werden sp&#228;ter in diesem Buch auch nicht darauf Bezug nehmen oder sie voraussetzen. Aber wir finden, du solltest sie kennen, weil sie einfach n&#252;tzlich sind.
+
 ### Auto-Completion ###
 
+### Auto-Vervollst&#228;ndigung ###
+
 If you use the Bash shell, Git comes with a nice auto-completion script you can enable. Download the Git source code, and look in the `contrib/completion` directory; there should be a file called `git-completion.bash`. Copy this file to your home directory, and add this to your `.bashrc` file:
 
+Wenn du die Bash Shell verwendest, dann kannst du ein Skript f&#252;r Git Auto-Vervollst&#228;ndigung einbinden, das mit Git mitgeliefert wird. Wenn du den Git Quellcode heruntergeladen hast, findest du im Verzeichnis `contrib/completion` die Datei `git-completion.bash`. Kopiere diese Datei in dein Home Verzeichnis (xxx) und f&#252;ge die folgende Zeile in deine `.bashrc` Datei hinzu:
+
 	source ~/.git-completion.bash
 
 If you want to set up Git to automatically have Bash shell completion for all users, copy this script to the `/opt/local/etc/bash_completion.d` directory on Mac systems or to the `/etc/bash_completion.d/` directory on Linux systems. This is a directory of scripts that Bash will automatically load to provide shell completions.
 
+Wenn du Git Auto-Vervollst&#228;ndigung f&#252;r alle Benutzer deines Rechners aufsetzen willst, kopiere das Skript in das Verzeichnis `/opt/local/etc/bash_completion.d` (auf Mac OS X Systemen) bzw. `/etc/bash_completion.d/` (auf Linux Systemen). Bash sucht in diesem Verzeichnis nach Erweiterungen f&#252;r die Autovervollst&#228;ndigung und l&#228;dt sie automatisch.
+
 If you&#8217;re using Windows with Git Bash, which is the default when installing Git on Windows with msysGit, auto-completion should be preconfigured.
 
+Auf Windows Systemen sollte die Autovervollst&#228;ndigung bereits konfiguriert sein: Git Bash ist standardm&#228;&#223;ig installiert, wenn du msysGit verwendest.
+
 Press the Tab key when you&#8217;re writing a Git command, and it should return a set of suggestions for you to pick from:
 
+W&#228;hrend du einen Git Befehl tippst, kannst du jetzt die Tab Taste dr&#252;cken und wirst dann eine Auswahl von Vorschl&#228;gen erhalten, aus denen du ausw&#228;hlen kannst:
+
 	$ git co&lt;tab&gt;&lt;tab&gt;
 	commit config
 
 In this case, typing git co and then pressing the Tab key twice suggests commit and config. Adding `m&lt;tab&gt;` completes `git commit` automatically.
+
+D.h., wenn du `git co` schreibst und dann die Tab Taste zwei Mal dr&#252;ckst, erh&#228;ltst du die Vorschl&#228;ge `commit` und `config`. Wenn du Tab nur ein Mal dr&#252;ckst, vervollst&#228;ndigt den Befehl deine Eingabe direkt zu `git commit`.
 	
 This also works with options, which is probably more useful. For instance, if you&#8217;re running a `git log` command and can&#8217;t remember one of the options, you can start typing it and press Tab to see what matches:
 
+Das funktioniert auch mit Optionen - was oftmals noch hilfreicher ist. Wenn du beispielsweise `git log` verwenden willst und dich nicht an eine bestimmte Option erinnern kannst, schreibst du einfach den Befehl und dr&#252;ckst die Tab Taste, um die Optionen anzuzeigen:
+
 	$ git log --s&lt;tab&gt;
 	--shortstat  --since=  --src-prefix=  --stat   --summary
 
 That&#8217;s a pretty nice trick and may save you some time and documentation reading.
 
+Das erspart dir, viel Zeit mit dem Nachschlagen in der Dokumentation zu verbringen.
+
 ### Git Aliases ###
 
+### Git Aliase ###
+
 Git doesn&#8217;t infer your command if you type it in partially. If you don&#8217;t want to type the entire text of each of the Git commands, you can easily set up an alias for each command using `git config`. Here are a couple of examples you may want to set up:
 
+Git versucht nicht, zu erraten, welchen Befehl du verwenden willst, wenn du ihn nur teilweise eingibst. Wenn du lange Befehle nicht immer wieder eintippen willst, kannst du mit `git config` auf einfache Weise Aliase definieren. Hier einige Beispiele, die du vielleicht n&#252;tzlich findest:
+
 	$ git config --global alias.co checkout
 	$ git config --global alias.br branch
 	$ git config --global alias.ci commit
@@ -1385,20 +1509,30 @@ Git doesn&#8217;t infer your command if you type it in partially. If you don&#8217;t wan
 
 This means that, for example, instead of typing `git commit`, you just need to type `git ci`. As you go on using Git, you&#8217;ll probably use other commands frequently as well; in this case, don&#8217;t hesitate to create new aliases.
 
+Das hei&#223;t, da&#223; du z.B. einfach `git ci` anstelle von `git commit` schreiben kannst. Wenn du Git oft verwendest, werden dir sicher weitere Befehle begegnen, die du sehr oft nutzt. In diesem Fall z&#246;gere nicht, weitere Aliase zu definieren.
+
 This technique can also be very useful in creating commands that you think should exist. For example, to correct the usability problem you encountered with unstaging a file, you can add your own unstage alias to Git:
 
+Diese Technik kann auch dabei helfen, Git Befehle zu definieren, von denen du denkst, es sollte sie geben:
+
 	$ git config --global alias.unstage 'reset HEAD --'
 
 This makes the following two commands equivalent:
 
+Das bewirkt, da&#223; die beiden folgenden Befehle &#228;quivalent sind:
+
 	$ git unstage fileA
 	$ git reset HEAD fileA
 
 This seems a bit clearer. It&#8217;s also common to add a `last` command, like this:
 
+Das ist etwas klarer, oder? Ein weiterer, typischer Alias ist der `last` Befehl:
+
 	$ git config --global alias.last 'log -1 HEAD'
 
 This way, you can see the last commit easily:
+
+Auf diese Weise kannst Du leicht den letzten Commit nachschlagen:
 	
 	$ git last
 	commit 66938dae3329c7aebe598c2246a8e6af90d04646
@@ -1411,8 +1545,15 @@ This way, you can see the last commit easily:
 
 As you can tell, Git simply replaces the new command with whatever you alias it for. However, maybe you want to run an external command, rather than a Git subcommand. In that case, you start the command with a `!` character. This is useful if you write your own tools that work with a Git repository. We can demonstrate by aliasing `git visual` to run `gitk`:
 
+Wie du dir denken kannst, ersetzt Git ganz einfach den Alias mit dem jeweiligen Befehl, f&#252;r den er definiert ist. Wenn du allerdings einen externen Befehl anstelle eines Git Subbefehls ausf&#252;hren willst, kannst du den Befehl mit einem Auf&#252;hrungszeichen (`!`) anfangen. Das ist in der Regel n&#252;tzlich, wenn du deine eigenen Hilfsmittel schreibst, um Git zu erweitern. Wir k&#246;nnen das demonstrieren, indem wir `git visual` als `gitk` definieren:
+
 	$ git config --global alias.visual &quot;!gitk&quot;
 
 ## Summary ##
 
+## Zusammenfassung ##
+
 At this point, you can do all the basic local Git operations &#8212; creating or cloning a repository, making changes, staging and committing those changes, and viewing the history of all the changes the repository has been through. Next, we&#8217;ll cover Git&#8217;s killer feature: its branching model.
+
+Du solltest jetzt in der Lage sein, die wichtigsten Git Befehle einzusetzen und Repositories neu zu erzeugen und zu klonen, &#196;nderungen vorzunehmen und zur Staging Area hinzuzuf&#252;gen, Commits anzulegen und die Historie aller Commits in einem Repository zu durchsuchen. Als n&#228;chstes werden wir auf Gits &quot;Killer Feature&quot; (xxx) eingehen: das Branching Konzept.
+</diff>
      <filename>de/02-git-basics/01-chapter2.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -150,6 +150,7 @@ At this stage, you&#8217;ll receive a call that another issue is critical and you ne
 3.	After it&#8217;s tested, merge the hotfix branch, and push to production.
 4.	Switch back to your original story and continue working.
 
+### Branching Grundlagen ###
 ### Basic Branching ###
 
 Sagen wir, du hast an deinem Projekt gearbeitet und einige Commits bereits durchgef&#252;hrt (siehe Abbildung 3-10).
@@ -159,38 +160,48 @@ Insert 18333fig0310.png
 Abbildung 3-10. Eine kurze, einfache Commit-Historie
 Figure 3-10. A short and simple commit history
 
+Du hast dich entschiden, am Issue #53 des Issue-Tracking-Systems XYZ deiner Firma zuarbeiten. Um es klarzustellen: Git ist an kein spezifisches Issue-Tracking-Systems gebunden, aber weil Issue #53 ein wichtiges Thema ist, willst du daran arbeiten und erstellst eine neue Branch , um daran zu arbeiten. Um die Branch zu erstellen und gleichzeitig zu ihr umzuschalten, kannst du das Kommando 'git checkout' in Verbindung mitder Option '-b' verwenden:
 You&#8217;ve decided that you&#8217;re going to work on issue #53 in whatever issue-tracking system your company uses. To be clear, Git isn&#8217;t tied into any particular issue-tracking system; but because issue #53 is a focused topic that you want to work on, you&#8217;ll create a new branch in which to work. To create a branch and switch to it at the same time, you can run the `git checkout` command with the `-b` switch:
 
 	$ git checkout -b iss53
 	Switched to a new branch &quot;iss53&quot;
 
+Das ist die Kurzform von
 This is shorthand for 
 
 	$ git branch iss53
 	$ git checkout iss53
 
+Abbildung 3-11 verdeutlicht das Ergebnis.
 Figure 3-11 illustrates the result.
 
 Insert 18333fig0311.png 
+Abbildung 3-11. Erstellung eines neuen Branch-Pointers
 Figure 3-11. Creating a new branch pointer
 
+Du arbeitest an deiner Web-Site und machst ein paar Commits. Dabei bewegt sich die 'iss53' Branch vorw&#228;rts, da sie gerade deine aktuelle Branch ist (der HEAD Pointer verweist darauf, siehe Abbildung 3-12):
 You work on your web site and do some commits. Doing so moves the `iss53` branch forward, because you have it checked out (that is, your HEAD is pointing to it; see Figure 3-12):
 
 	$ vim index.html
 	$ git commit -a -m 'added a new footer [issue 53]'
 
 Insert 18333fig0312.png 
+Abbildung 3-12. Die iss53 Branch hat sich mit deiner Arbeit weiterentwickelt.
 Figure 3-12. The iss53 branch has moved forward with your work.
 
+Jetzt bekommst du einen Anruf, dass es ein Problem mit der Website gibt, und du musst es umgehend beheben. Mit Git musst die Problembehebung nicht zusammen mit der Arbeit an 'iss53' einspielen, und du musst auch keinen Aufwand in das Zur&#252;cksetzen der &#196;nderungen stecken, bevor du die Problembehebung in die Produktion einspielen kannst. Alles was du machen musst, ist zur&#252;ck zur master Branch schalten.
 Now you get the call that there is an issue with the web site, and you need to fix it immediately. With Git, you don&#8217;t have to deploy your fix along with the `iss53` changes you&#8217;ve made, and you don&#8217;t have to put a lot of effort into reverting those changes before you can work on applying your fix to what is in production. All you have to do is switch back to your master branch.
 
+Wie auch immer, bevor du das machst, ein Hinweis, wenn du nicht committete Sachen in deinem Arbeits- oder Staging-Verzeichnis hast, die einen Konflikt mit der Branch, zu der du schalten willst, hat, l&#228;sst dich Git nicht dorthin schalten. Am besten man hat einen sauberen Arbeitsstand, wenn man die Branch wechseln will. Es gibt Wege, um das zu umgehen (stashing und commit amending). Aber dazu sp&#228;ter mehr. Im Moment solltest du deine &#196;nderungen committen und dann zur master Branch wechseln:
 However, before you do that, note that if your working directory or staging area has uncommitted changes that conflict with the branch you&#8217;re checking out, Git won&#8217;t let you switch branches. It&#8217;s best to have a clean working state when you switch branches. There are ways to get around this (namely, stashing and commit amending) that we&#8217;ll cover later. For now, you&#8217;ve committed all your changes, so you can switch back to your master branch:
 
 	$ git checkout master
 	Switched to branch &quot;master&quot;
 
+An dieser Stelle befindet sich dein Prjekt Arbeitsverzeichnis an exakt der gleichen Stelle, wie vor der Arbeit an 'iss53', und du kannst dich auf den Hotfix konzentrieren. Das ist ein wichtiger Aspekt, den man im Kopf behalten sollte: Git setzt dein Arbeitsverzeichnis immer auf den Stand, der dem Snapshot der aktuellen Branch entspricht. Es werden automatisch die entsprechenden Dateien hinzugef&#252;gt, gel&#246;scht und modifiziert, damit die Arbeitskopie, wie nach deinem letzten Commit in dieser Branch aussieht.
 At this point, your project working directory is exactly the way it was before you started working on issue #53, and you can concentrate on your hotfix. This is an important point to remember: Git resets your working directory to look like the snapshot of the commit that the branch you check out points to. It adds, removes, and modifies files automatically to make sure your working copy is what the branch looked like on your last commit to it.
 
+Als n&#228;chstes hast du einen Hotfix zu machen. Lass uns eine 'Hotfix' Branch erstellen, an der du bis zur Fertigstellung arbeitest (siehe Abbildung 3-13):
 Next, you have a hotfix to make. Let&#8217;s create a hotfix branch on which to work until it&#8217;s completed (see Figure 3-13):
 
 	$ git checkout -b 'hotfix'
@@ -201,8 +212,10 @@ Next, you have a hotfix to make. Let&#8217;s create a hotfix branch on which to work
 	 1 files changed, 0 insertions(+), 1 deletions(-)
 
 Insert 18333fig0313.png 
+Abbildung 3-13. Hotfix Branch verweist auf die master Branch zur&#252;ck
 Figure 3-13. hotfix branch based back at your master branch point
 
+Mach deine Tests, stell sicher, dass der Hotfix das macht, was du willst und f&#252;hre ihn mit der master Branch zusammen, um diese wieder in die Produktion zu bringen. Du machst das mit dem Kommando 'git merge':
 You can run your tests, make sure the hotfix is what you want, and merge it back into your master branch to deploy to production. You do this with the `git merge` command:
 
 	$ git checkout master
@@ -212,6 +225,7 @@ You can run your tests, make sure the hotfix is what you want, and merge it back
 	 README |    1 -
 	 1 files changed, 0 insertions(+), 1 deletions(-)
 
+Hast du die Nachricht &quot;Fast forward&quot; beim Zusammenf&#252;hren gesehen? Da du auf die aktuelle Branch aufgesetzt hast und die &#196;nderung eine direkte Weiterf&#252;hrung dieser war, hat Git den Pointer weitergestellt. Anders ausgedr&#252;ckt, wenn zwischen zwei Branches kein Unterschied besteht oder nur eine davon eine Weiterentwicklung darstellt, bringt Git diese beiden wieder auf 'Linie' - das wird dann 'fast forward' genannt.
 You&#8217;ll notice the phrase &quot;Fast forward&quot; in that merge. Because the commit pointed to by the branch you merged in was directly upstream of the commit you&#8217;re on, Git moves the pointer forward. To phrase that another way, when you try to merge one commit with a commit that can be reached by following the first commit&#8217;s history, Git simplifies things by moving the pointer forward because there is no divergent work to merge together &#8212; this is called a &quot;fast forward&quot;.
 
 Your change is now in the snapshot of the commit pointed to by the `master` branch, and you can deploy your change (see Figure 3-14).</diff>
      <filename>de/03-git-branching/01-chapter3.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1,169 +1,72 @@
-# Git und andere Versionsverwaltungen #
-
-Leider ist die Welt nicht perfekt. Normalerweise kannst Du nicht bei jedem Deiner Projekt sofort auf Git umsteigen. Manchmal musst Du in einem Deiner Projekte irgendeine andere Versionsverwaltung nutzen, ziemlich oft ist das Subversion. Im ersten Teil dieses Kapitels werden wir das bidirektionale Gateway zwischen Git und Subversion kennezulernen: `git svn`.
-
-Manchmal kommst Du an den Zeitpunkt, zu dem Du ein bestehendes Projekt zu Git konvertieren willst. Der zweite Teil dieses Kapitels zeigt Dir, wie Du Dein Projekt zu Git migrieren kannst. Zun&#228;chst behandeln wir Subversion, dann Perforce und zum Schluss verwenden wir ein angepasstes Import-Skript, um einen nicht standard-m&#228;&#223;igen Import abzudecken.
-
-## Git und Subversion ##
-
-Gegenw&#228;rtig verwenden die meisten Open Source Entwicklungsprojekte und eine gro&#223;e Anzahl von Projekten in Unternehmen Subversion, um ihren Quellcode zu verwalten. Es ist die popul&#228;rste Open Source Versionsverwaltung und wird seit fast einem Jahrzehnt eingesetzt. In vielen Bereichen &#228;hnelt es CVS, das vorher der K&#246;nig der Versionsverwaltungen war.
-
-Eines der gro&#223;artigen Features von Git ist die bi-direktionale Br&#252;cke zu Subversion: `git svn`. Diese Tool erm&#246;glicht es, Git als ganz normalen Client f&#252;r einen Subversion-Server zu benutzen, so dass Du alle lokalen Features von Git nutzen kanns und Deine &#196;nderungen dann auf einen Subversion-Server pushen kannst, so als ob Du Subversion lokal nutzen w&#252;rdest. Das bedeutet, dass Du lokale Branches anlegen kannst, mergen, die staging area, rebasing, cherry-picking etc. verwenden, w&#228;hrend Deine Kollegen weiterhin aus ihre angestaubte Art und Weise arbeiten. Das ist eine gute Gelegenheit, um Git in einem Unternehmen einzuf&#252;hren und Deinen Entwickler-Kollegen dabei zu helfen, effizienter zu werden w&#228;hrend Du an der Unterst&#252;tzung arbeitest, die Infrastruktur so umzubauen, dass Git voll unterst&#252;tzt wird. Die Subversion-Bridge von Git ist quasi die Einstiegsdroge in die Welt der verteilten Versionsverwaltungssysteme (distributed version control systems, DVCS).
-
-### git svn ###
-
-Das Haupt-Kommando in Git f&#252;r alle Kommandos der Subversion Bridge ist `git svn`. Dieser Befehl wird allen anderen vorangestellt. Er kennt zahlreiche Optionen, daher werde wir jetzt die gebr&#228;uchlichsten zusammen anhand von ein paar Beispielen durchspielen.
-
-Es ist wichtig, dass Du im Hinterkopf beh&#228;ltst, dass Du mit dem `git svn` Befehl mit Subversion interagierst, eine System, dass nicht ganz so fortschrittlich ist wie Git. Obwohl Du auch dort ganz einfach Branches erstellen und wieder zusammenf&#252;hren kannst, ist es &#252;blicherweise am einfachsten, wenn Du die History so geradlinig wie m&#246;glich gestaltest, indem Du ein rebase f&#252;r Deine Arbeit durchf&#252;rst und es vermeidest, zum Beispiel mit einem entfernten Git-Repository zu interagieren.
-
-Du solltest auf keinen Fall Deine History neu schreiben und dann versuchen, die &#196;nderungen zu publizieren. Bitte schick Deine &#196;nderungen auch nicht zeitgleich dazu an ein anderes Git-Repository, in dem Du mit Deinen Kollegen zusammenarbeitest, die bereits Git nutzen. Subversion kennt nur eine einzige lineare History f&#252;r das gesamte Repository und da kommt man schnell mal durcheinander. Wenn Du in einem Team arbeitest, in dem manche Deiner Kollegen SVN und andere schon Git nutzen, dann solltest Du sicherstellen, dass Ihr alle einen SVN-Server zur Zusammenarbeit nutzt, das macht Dein Leben deutlich einfacher.
-
-### Installation ###
-
-Um dieses Feature zu demonstrieren, brauchst Du zun&#228;chst ein typisches SVN-Repository, in dem Du Schreibzugriff hast. Wenn Du die folgenden Beispiele selbst ausprobieren willst, brauchst Du eine beschreibbare Kopie meines Test-Repositories. Das geht ganz einfach mit einem kleinen Tool namens `svnsync`, das mit den letzten Subversion-Versionen (ab Version 1.4) mitgeliefert wird. F&#252;r diese Test habe ich ein neues Subversion Repository auf Google Code angelegt, das einen Teil aus dem `protobuf`-Projekts kopiert, einem Tool, das Datenstrukturen f&#252;r die &#220;bertragung &#252;ber ein Netzwerk umwandelt.
-
-Zun&#228;chst einmal musst Du ein neues lokales Subversion-Repository anlegen:
-
-	$ mkdir /tmp/test-svn
-	$ svnadmin create /tmp/test-svn
-
-Anschlie&#223;end gibst Du allen Usern die M&#246;glichkeit, die revprops zu &#228;ndern. Am einfachsten geht das, indem wir ein pre-revprop-change Skript erstellen, das immer 0 zur&#252;ckgibt:
-
-	$ cat /tmp/test-svn/hooks/pre-revprop-change 
-	#!/bin/sh
-	exit 0;
-	$ chmod +x /tmp/test-svn/hooks/pre-revprop-change
-
-Jetzt kannst Du dieses Projekt auf Deinen lokalen Rechner mit einem Aufruf von `svnsync init` synchronisieren. Als Optionen gibst Du das Ziel- und das Quell-Repository an.
-
-	$ svnsync init file:///tmp/test-svn http://progit-example.googlecode.com/svn/ 
-
-Das richtet die Properties ein, um die Synchronisierung laufen zu lassen. Nun kannst Du den Code klonen:
-
-	$ svnsync sync file:///tmp/test-svn
-	Committed revision 1.
-	Copied properties for revision 1.
-	Committed revision 2.
-	Copied properties for revision 2.
-	Committed revision 3.
-	...
-
-Obwohl diese Operation m&#246;glicherweise nur ein paar wenige Minuten in Anspruch nimmt, wird das Kopieren des Quell-Repositories von einem entfernten Repository in ein lokales fast eine Stunde dauern, auch wenn weniger als 100 Commits get&#228;tigt wurden. Subversion muss jede Revision einzeln klonen und sie dann in ein anderes Repository schieben - das ist zwar ziemlich ineffizient, aber f&#252;r uns der einfachste Weg.
-
-### Die ersten Schritte ###
-
-Jetzt, da wir ein beschreibbares Subversion Repository haben, k&#246;nnen wir mit einem typischen Workflow loslegen. Du beginnst mit dem `git svn clone`Kommando, das ein komplettes Subversion-Repository in ein lokales Git-Repository importiert. Denk daran, dass Du `file:///tmp/test-svn` im folgenden Beispiel mit der URL Deines eigenen Subversion-Repositorys ersetzt, wenn Du den Import f&#252;r ein real existierendes Subversion-Repository durchf&#252;hren willst.
-
-	$ git svn clone file:///tmp/test-svn -T trunk -b branches -t tags
-	Initialized empty Git repository in /Users/schacon/projects/testsvnsync/svn/.git/
-	r1 = b4e387bc68740b5af56c2a5faf4003ae42bd135c (trunk)
-	      A    m4/acx_pthread.m4
-	      A    m4/stl_hash.m4
-	...
-	r75 = d1957f3b307922124eec6314e15bcda59e3d9610 (trunk)
-	Found possible branch point: file:///tmp/test-svn/trunk =&gt; \
-	    file:///tmp/test-svn /branches/my-calc-branch, 75
-	Found branch parent: (my-calc-branch) d1957f3b307922124eec6314e15bcda59e3d9610
-	Following parent with do_switch
-	Successfully followed parent
-	r76 = 8624824ecc0badd73f40ea2f01fce51894189b01 (my-calc-branch)
-	Checked out HEAD:
-	 file:///tmp/test-svn/branches/my-calc-branch r76
-
-Hier werden f&#252;r die angegebene URL eigentlich zwei Befehle ausgef&#252;hrt, `git svn init` und anschlie&#223;end `git svn fetch`. Das kann auch eine Weile dauern. Das Testprojekt hat nur etwa 75 Commits und die Codebase ist nicht so gro&#223;, daher ben&#246;tigen wir nur ein paar Minuten. Da Git aber jede Version einzeln auschecken muss, kann es unter Umst&#228;nden Stunden oder gar Tage dauern, bis die Ausf&#252;hrung des Befehls fertig ist.
-
-Die Parameter `-T trunk -b branches -t tags` teilen Git mit, dass das Subversion-Repository den normalen Konventionen bez&#252;glich Branching und Tagging folgt. Wenn Du Deinen Trunk, Deine Branches oder Deine Tags anders benannt hast, kannst Du diese hier anpassen. Da die Angabe aus dem Beispiel f&#252;r die meisten Repositories g&#228;ngig ist, kannst Du das ganze auch mit `-s` abk&#252;rzen. Diese Option steht f&#252;r das Standard-Repository-Layount und umfasst die oben genannten Parameter. Der folgende Befehl ist &#228;quivalent zum zuvor genannten:
-
-	$ git svn clone file:///tmp/test-svn -s
-
-Jetzt solltest Du ein Git-Repository erzeugt haben, in das Deine Branches und Tags &#252;bernommen wurden: 
-
-	$ git branch -a
-	* master
-	  my-calc-branch
-	  tags/2.0.2
-	  tags/release-2.0.1
-	  tags/release-2.0.2
-	  tags/release-2.0.2rc1
-	  trunk
-
-An dieser Stelle soll die wichtige Anmerkung nicht fehlen, dass dieses Tool die Namespaces Deiner entfernten Referenzen unterschiedlich behandelt. Wenn Du ein normales Git-Repository klonst, werden alle Branches auf jenem entfernten Server f&#252;r Dich lokal verf&#252;gbar gemacht, zum Beispiel als `origin/[branch]`, der Namespace entspricht dem Namen des entfernten Branches. `git svn` get allerdings davon aus, dass es nicht mehrere entfernte Repositorys gibt und speichert daher seie Referenzen auf die Bereiche entfernter Server ohne Namespaces. Du kannst das Git-Kommando `show-ref` verwenden, um Dir die vollst&#228;ndigen Namen aller Referenzen anzeigen zu lassen:
-
-	$ git show-ref
-	1cbd4904d9982f386d87f88fce1c24ad7c0f0471 refs/heads/master
-	aee1ecc26318164f355a883f5d99cff0c852d3c4 refs/remotes/my-calc-branch
-	03d09b0e2aad427e34a6d50ff147128e76c0e0f5 refs/remotes/tags/2.0.2
-	50d02cc0adc9da4319eeba0900430ba219b9c376 refs/remotes/tags/release-2.0.1
-	4caaa711a50c77879a91b8b90380060f672745cb refs/remotes/tags/release-2.0.2
-	1c4cb508144c513ff1214c3488abe66dcb92916f refs/remotes/tags/release-2.0.2rc1
-	1cbd4904d9982f386d87f88fce1c24ad7c0f0471 refs/remotes/trunk
-
-Ein normales Git-Repository sieht dagegen eher so aus:
-
-	$ git show-ref
-	83e38c7a0af325a9722f2fdc56b10188806d83a1 refs/heads/master
-	3e15e38c198baac84223acfc6224bb8b99ff2281 refs/remotes/gitserver/master
-	0a30dd3b0c795b80212ae723640d4e5d48cabdff refs/remotes/origin/master
-	25812380387fdd55f916652be4881c6f11600d6f refs/remotes/origin/testing
-
-Du hast zwei entfernte Server: einen, der `gitserver` hei&#223;t und einen `master`-Branch beinhaltet, und einen weiteren, der `origin` hei&#223;t und zwei Branches (`master` und `testing`) enth&#228;lt.
-
-Hast Du bemerkt, dass die entfernten Referenzen, die von `git svn` im Beispiel importiert wurden, nicht als echte Git-Tags importiert wurden, sondern als entfernte Branches? Dein Subversion-Import sieht aus als bes&#228;&#223;e er einen eigenen Remote-Bereich namens `tags` und unterhalb davon einzelne Branches.
-=======
 # Git and Other Systems #
+# Git und andere Versionsverwaltungen #
 
-Leider ist die Welt nicht perfekt. Normalerweise kannst Du nicht bei jedem Deiner Projekt sofort auf Git umsteigen. Manchmal musst Du in einem Deiner Projekte irgendeine andere Versionsverwaltung nutzen, ziemlich oft ist das Subversion. Im ersten Teil dieses Kapitels werden wir das bidirektionale Gateway zwischen Git und Subversion kennezulernen: `git svn`.
 The world isn&#8217;t perfect. Usually, you can&#8217;t immediately switch every project you come in contact with to Git. Sometimes you&#8217;re stuck on a project using another VCS, and many times that system is Subversion. You&#8217;ll spend the first part of this chapter learning about `git svn`, the bidirectional Subversion gateway tool in Git.
 
-Manchmal kommst Du an den Zeitpunkt, zu dem Du ein bestehendes Projekt zu Git konvertieren willst. Der zweite Teil dieses Kapitels zeigt Dir, wie Du Dein Projekt zu Git migrieren kannst. Zun&#228;chst behandeln wir Subversion, dann Perforce und zum Schluss verwenden wir ein angepasstes Import-Skript, um einen nicht standard-m&#228;&#223;igen Import abzudecken.
+Leider ist die Welt nicht perfekt. Normalerweise kannst Du nicht bei jedem Deiner Projekt sofort auf Git umsteigen. Manchmal musst Du in einem Deiner Projekte irgendeine andere Versionsverwaltung nutzen, ziemlich oft ist das Subversion. Im ersten Teil dieses Kapitels werden wir das bidirektionale Gateway zwischen Git und Subversion kennezulernen: `git svn`.
+
 At some point, you may want to convert your existing project to Git. The second part of this chapter covers how to migrate your project into Git: first from Subversion, then from Perforce, and finally via a custom import script for a nonstandard importing case. 
 
+Manchmal kommst Du an den Zeitpunkt, zu dem Du ein bestehendes Projekt zu Git konvertieren willst. Der zweite Teil dieses Kapitels zeigt Dir, wie Du Dein Projekt zu Git migrieren kannst. Zun&#228;chst behandeln wir Subversion, dann Perforce und zum Schluss verwenden wir ein angepasstes Import-Skript, um einen nicht standard-m&#228;&#223;igen Import abzudecken.
+
 ## Git and Subversion ##
+## Git und Subversion ##
 
-Gegenw&#228;rtig verwenden die meisten Open Source Entwicklungsprojekte und eine gro&#223;e Anzahl von Projekten in Unternehmen Subversion, um ihren Quellcode zu verwalten. Es ist die popul&#228;rste Open Source Versionsverwaltung und wird seit fast einem Jahrzehnt eingesetzt. In vielen Bereichen &#228;hnelt es CVS, das vorher der K&#246;nig der Versionsverwaltungen war.
 Currently, the majority of open source development projects and a large number of corporate projects use Subversion to manage their source code. It&#8217;s the most popular open source VCS and has been around for nearly a decade. It&#8217;s also very similar in many ways to CVS, which was the big boy of the source-control world before that.
 
-Eines der gro&#223;artigen Features von Git ist die bi-direktionale Br&#252;cke zu Subversion: `git svn`. Diese Tool erm&#246;glicht es, Git als ganz normalen Client f&#252;r einen Subversion-Server zu benutzen, so dass Du alle lokalen Features von Git nutzen kanns und Deine &#196;nderungen dann auf einen Subversion-Server pushen kannst, so als ob Du Subversion lokal nutzen w&#252;rdest. Das bedeutet, dass Du lokale Branches anlegen kannst, mergen, die staging area, rebasing, cherry-picking etc. verwenden, w&#228;hrend Deine Kollegen weiterhin aus ihre angestaubte Art und Weise arbeiten. Das ist eine gute Gelegenheit, um Git in einem Unternehmen einzuf&#252;hren und Deinen Entwickler-Kollegen dabei zu helfen, effizienter zu werden w&#228;hrend Du an der Unterst&#252;tzung arbeitest, die Infrastruktur so umzubauen, dass Git voll unterst&#252;tzt wird. Die Subversion-Bridge von Git ist quasi die Einstiegsdroge in die Welt der verteilten Versionsverwaltungssysteme (distributed version control systems, DVCS).
+Gegenw&#228;rtig verwenden die meisten Open Source Entwicklungsprojekte und eine gro&#223;e Anzahl von Projekten in Unternehmen Subversion, um ihren Quellcode zu verwalten. Es ist die popul&#228;rste Open Source Versionsverwaltung und wird seit fast einem Jahrzehnt eingesetzt. In vielen Bereichen &#228;hnelt es CVS, das vorher der K&#246;nig der Versionsverwaltungen war.
+
 One of Git&#8217;s great features is a bidirectional bridge to Subversion called `git svn`. This tool allows you to use Git as a valid client to a Subversion server, so you can use all the local features of Git and then push to a Subversion server as if you were using Subversion locally. This means you can do local branching and merging, use the staging area, use rebasing and cherry-picking, and so on, while your collaborators continue to work in their dark and ancient ways. It&#8217;s a good way to sneak Git into the corporate environment and help your fellow developers become more efficient while you lobby to get the infrastructure changed to support Git fully. The Subversion bridge is the gateway drug to the DVCS world.
 
+Eines der gro&#223;artigen Features von Git ist die bi-direktionale Br&#252;cke zu Subversion: `git svn`. Diese Tool erm&#246;glicht es, Git als ganz normalen Client f&#252;r einen Subversion-Server zu benutzen, so dass Du alle lokalen Features von Git nutzen kanns und Deine &#196;nderungen dann auf einen Subversion-Server pushen kannst, so als ob Du Subversion lokal nutzen w&#252;rdest. Das bedeutet, dass Du lokale Branches anlegen kannst, mergen, die staging area, rebasing, cherry-picking etc. verwenden, w&#228;hrend Deine Kollegen weiterhin aus ihre angestaubte Art und Weise arbeiten. Das ist eine gute Gelegenheit, um Git in einem Unternehmen einzuf&#252;hren und Deinen Entwickler-Kollegen dabei zu helfen, effizienter zu werden w&#228;hrend Du an der Unterst&#252;tzung arbeitest, die Infrastruktur so umzubauen, dass Git voll unterst&#252;tzt wird. Die Subversion-Bridge von Git ist quasi die Einstiegsdroge in die Welt der verteilten Versionsverwaltungssysteme (distributed version control systems, DVCS).
+
 ### git svn ###
 
-Das Haupt-Kommando in Git f&#252;r alle Kommandos der Subversion Bridge ist `git svn`. Dieser Befehl wird allen anderen vorangestellt. Er kennt zahlreiche Optionen, daher werde wir jetzt die gebr&#228;uchlichsten zusammen anhand von ein paar Beispielen durchspielen.
 The base command in Git for all the Subversion bridging commands is `git svn`. You preface everything with that. It takes quite a few commands, so you&#8217;ll learn about the common ones while going through a few small workflows.
 
-Es ist wichtig, dass Du im Hinterkopf beh&#228;ltst, dass Du mit dem `git svn` Befehl mit Subversion interagierst, eine System, dass nicht ganz so fortschrittlich ist wie Git. Obwohl Du auch dort ganz einfach Branches erstellen und wieder zusammenf&#252;hren kannst, ist es &#252;blicherweise am einfachsten, wenn Du die History so geradlinig wie m&#246;glich gestaltest, indem Du ein rebase f&#252;r Deine Arbeit durchf&#252;rst und es vermeidest, zum Beispiel mit einem entfernten Git-Repository zu interagieren.
+Das Haupt-Kommando in Git f&#252;r alle Kommandos der Subversion Bridge ist `git svn`. Dieser Befehl wird allen anderen vorangestellt. Er kennt zahlreiche Optionen, daher werde wir jetzt die gebr&#228;uchlichsten zusammen anhand von ein paar Beispielen durchspielen.
+
 It&#8217;s important to note that when you&#8217;re using `git svn`, you&#8217;re interacting with Subversion, which is a system that is far less sophisticated than Git. Although you can easily do local branching and merging, it&#8217;s generally best to keep your history as linear as possible by rebasing your work and avoiding doing things like simultaneously interacting with a Git remote repository.
 
-Du solltest auf keinen Fall Deine History neu schreiben und dann versuchen, die &#196;nderungen zu publizieren. Bitte schick Deine &#196;nderungen auch nicht zeitgleich dazu an ein anderes Git-Repository, in dem Du mit Deinen Kollegen zusammenarbeitest, die bereits Git nutzen. Subversion kennt nur eine einzige lineare History f&#252;r das gesamte Repository und da kommt man schnell mal durcheinander. Wenn Du in einem Team arbeitest, in dem manche Deiner Kollegen SVN und andere schon Git nutzen, dann solltest Du sicherstellen, dass Ihr alle einen SVN-Server zur Zusammenarbeit nutzt, das macht Dein Leben deutlich einfacher.
+Es ist wichtig, dass Du im Hinterkopf beh&#228;ltst, dass Du mit dem `git svn` Befehl mit Subversion interagierst, eine System, dass nicht ganz so fortschrittlich ist wie Git. Obwohl Du auch dort ganz einfach Branches erstellen und wieder zusammenf&#252;hren kannst, ist es &#252;blicherweise am einfachsten, wenn Du die History so geradlinig wie m&#246;glich gestaltest, indem Du ein rebase f&#252;r Deine Arbeit durchf&#252;rst und es vermeidest, zum Beispiel mit einem entfernten Git-Repository zu interagieren.
+
 Don&#8217;t rewrite your history and try to push again, and don&#8217;t push to a parallel Git repository to collaborate with fellow Git developers at the same time. Subversion can have only a single linear history, and confusing it is very easy. If you&#8217;re working with a team, and some are using SVN and others are using Git, make sure everyone is using the SVN server to collaborate &#8212; doing so will make your life easier.
 
+Du solltest auf keinen Fall Deine History neu schreiben und dann versuchen, die &#196;nderungen zu publizieren. Bitte schick Deine &#196;nderungen auch nicht zeitgleich dazu an ein anderes Git-Repository, in dem Du mit Deinen Kollegen zusammenarbeitest, die bereits Git nutzen. Subversion kennt nur eine einzige lineare History f&#252;r das gesamte Repository und da kommt man schnell mal durcheinander. Wenn Du in einem Team arbeitest, in dem manche Deiner Kollegen SVN und andere schon Git nutzen, dann solltest Du sicherstellen, dass Ihr alle einen SVN-Server zur Zusammenarbeit nutzt, das macht Dein Leben deutlich einfacher.
+
 ### Setting Up ###
+### Installation ###
 
-Um dieses Feature zu demonstrieren, brauchst Du zun&#228;chst ein typisches SVN-Repository, in dem Du Schreibzugriff hast. Wenn Du die folgenden Beispiele selbst ausprobieren willst, brauchst Du eine beschreibbare Kopie meines Test-Repositories. Das geht ganz einfach mit einem kleinen Tool namens `svnsync`, das mit den letzten Subversion-Versionen (ab Version 1.4) mitgeliefert wird. F&#252;r diese Test habe ich ein neues Subversion Repository auf Google Code angelegt, das einen Teil aus dem `protobuf`-Projekts kopiert, einem Tool, das Datenstrukturen f&#252;r die &#220;bertragung &#252;ber ein Netzwerk umwandelt.
 To demonstrate this functionality, you need a typical SVN repository that you have write access to. If you want to copy these examples, you&#8217;ll have to make a writeable copy of my test repository. In order to do that easily, you can use a tool called `svnsync` that comes with more recent versions of Subversion &#8212; it should be distributed with at least 1.4. For these tests, I created a new Subversion repository on Google code that was a partial copy of the `protobuf` project, which is a tool that encodes structured data for network transmission. 
 
-Zun&#228;chst einmal musst Du ein neues lokales Subversion-Repository anlegen:
+Um dieses Feature zu demonstrieren, brauchst Du zun&#228;chst ein typisches SVN-Repository, in dem Du Schreibzugriff hast. Wenn Du die folgenden Beispiele selbst ausprobieren willst, brauchst Du eine beschreibbare Kopie meines Test-Repositories. Das geht ganz einfach mit einem kleinen Tool namens `svnsync`, das mit den letzten Subversion-Versionen (ab Version 1.4) mitgeliefert wird. F&#252;r diese Test habe ich ein neues Subversion Repository auf Google Code angelegt, das einen Teil aus dem `protobuf`-Projekts kopiert, einem Tool, das Datenstrukturen f&#252;r die &#220;bertragung &#252;ber ein Netzwerk umwandelt.
+
 To follow along, you first need to create a new local Subversion repository:
 
+Zun&#228;chst einmal musst Du ein neues lokales Subversion-Repository anlegen:
+
 	$ mkdir /tmp/test-svn
 	$ svnadmin create /tmp/test-svn
 
-Anschlie&#223;end gibst Du allen Usern die M&#246;glichkeit, die revprops zu &#228;ndern. Am einfachsten geht das, indem wir ein pre-revprop-change Skript erstellen, das immer 0 zur&#252;ckgibt:
 Then, enable all users to change revprops &#8212; the easy way is to add a pre-revprop-change script that always exits 0:
 
+Anschlie&#223;end gibst Du allen Usern die M&#246;glichkeit, die revprops zu &#228;ndern. Am einfachsten geht das, indem wir ein pre-revprop-change Skript erstellen, das immer 0 zur&#252;ckgibt:
+
 	$ cat /tmp/test-svn/hooks/pre-revprop-change 
 	#!/bin/sh
 	exit 0;
 	$ chmod +x /tmp/test-svn/hooks/pre-revprop-change
 
-Jetzt kannst Du dieses Projekt auf Deinen lokalen Rechner mit einem Aufruf von `svnsync init` synchronisieren. Als Optionen gibst Du das Ziel- und das Quell-Repository an.
 You can now sync this project to your local machine by calling `svnsync init` with the to and from repositories.
 
+Jetzt kannst Du dieses Projekt auf Deinen lokalen Rechner mit einem Aufruf von `svnsync init` synchronisieren. Als Optionen gibst Du das Ziel- und das Quell-Repository an.
+
 	$ svnsync init file:///tmp/test-svn http://progit-example.googlecode.com/svn/ 
 
-Das richtet die Properties ein, um die Synchronisierung laufen zu lassen. Nun kannst Du den Code klonen:
 This sets up the properties to run the sync. You can then clone the code by running
 
+Das richtet die Properties ein, um die Synchronisierung laufen zu lassen. Nun kannst Du den Code klonen:
+
 	$ svnsync sync file:///tmp/test-svn
 	Committed revision 1.
 	Copied properties for revision 1.
@@ -172,13 +75,17 @@ This sets up the properties to run the sync. You can then clone the code by runn
 	Committed revision 3.
 	...
 
-Obwohl diese Operation m&#246;glicherweise nur ein paar wenige Minuten in Anspruch nimmt, wird das Kopieren des Quell-Repositories von einem entfernten Repository in ein lokales fast eine Stunde dauern, auch wenn weniger als 100 Commits get&#228;tigt wurden. Subversion muss jede Revision einzeln klonen und sie dann in ein anderes Repository schieben - das ist zwar ziemlich ineffizient, aber f&#252;r uns der einfachste Weg.
 Although this operation may take only a few minutes, if you try to copy the original repository to another remote repository instead of a local one, the process will take nearly an hour, even though there are fewer than 100 commits. Subversion has to clone one revision at a time and then push it back into another repository &#8212; it&#8217;s ridiculously inefficient, but it&#8217;s the only easy way to do this.
 
+Obwohl diese Operation m&#246;glicherweise nur ein paar wenige Minuten in Anspruch nimmt, wird das Kopieren des Quell-Repositories von einem entfernten Repository in ein lokales fast eine Stunde dauern, auch wenn weniger als 100 Commits get&#228;tigt wurden. Subversion muss jede Revision einzeln klonen und sie dann in ein anderes Repository schieben - das ist zwar ziemlich ineffizient, aber f&#252;r uns der einfachste Weg.
+
 ### Getting Started ###
+### Die ersten Schritte ###
 
 Now that you have a Subversion repository to which you have write access, you can go through a typical workflow. You&#8217;ll start with the `git svn clone` command, which imports an entire Subversion repository into a local Git repository. Remember that if you&#8217;re importing from a real hosted Subversion repository, you should replace the `file:///tmp/test-svn` here with the URL of your Subversion repository:
 
+Jetzt, da wir ein beschreibbares Subversion Repository haben, k&#246;nnen wir mit einem typischen Workflow loslegen. Du beginnst mit dem `git svn clone`Kommando, das ein komplettes Subversion-Repository in ein lokales Git-Repository importiert. Denk daran, dass Du `file:///tmp/test-svn` im folgenden Beispiel mit der URL Deines eigenen Subversion-Repositorys ersetzt, wenn Du den Import f&#252;r ein real existierendes Subversion-Repository durchf&#252;hren willst.
+
 	$ git svn clone file:///tmp/test-svn -T trunk -b branches -t tags
 	Initialized empty Git repository in /Users/schacon/projects/testsvnsync/svn/.git/
 	r1 = b4e387bc68740b5af56c2a5faf4003ae42bd135c (trunk)
@@ -197,12 +104,18 @@ Now that you have a Subversion repository to which you have write access, you ca
 
 This runs the equivalent of two commands &#8212; `git svn init` followed by `git svn fetch` &#8212; on the URL you provide. This can take a while. The test project has only about 75 commits and the codebase isn&#8217;t that big, so it takes just a few minutes. However, Git has to check out each version, one at a time, and commit it individually. For a project with hundreds or thousands of commits, this can literally take hours or even days to finish.
 
+Hier werden f&#252;r die angegebene URL eigentlich zwei Befehle ausgef&#252;hrt, `git svn init` und anschlie&#223;end `git svn fetch`. Das kann auch eine Weile dauern. Das Testprojekt hat nur etwa 75 Commits und die Codebase ist nicht so gro&#223;, daher ben&#246;tigen wir nur ein paar Minuten. Da Git aber jede Version einzeln auschecken muss, kann es unter Umst&#228;nden Stunden oder gar Tage dauern, bis die Ausf&#252;hrung des Befehls fertig ist.
+
 The `-T trunk -b branches -t tags` part tells Git that this Subversion repository follows the basic branching and tagging conventions. If you name your trunk, branches, or tags differently, you can change these options. Because this is so common, you can replace this entire part with `-s`, which means standard layout and implies all those options. The following command is equivalent:
 
+Die Parameter `-T trunk -b branches -t tags` teilen Git mit, dass das Subversion-Repository den normalen Konventionen bez&#252;glich Branching und Tagging folgt. Wenn Du Deinen Trunk, Deine Branches oder Deine Tags anders benannt hast, kannst Du diese hier anpassen. Da die Angabe aus dem Beispiel f&#252;r die meisten Repositories g&#228;ngig ist, kannst Du das ganze auch mit `-s` abk&#252;rzen. Diese Option steht f&#252;r das Standard-Repository-Layount und umfasst die oben genannten Parameter. Der folgende Befehl ist &#228;quivalent zum zuvor genannten:
+
 	$ git svn clone file:///tmp/test-svn -s
 
 At this point, you should have a valid Git repository that has imported your branches and tags:
 
+Jetzt solltest Du ein Git-Repository erzeugt haben, in das Deine Branches und Tags &#252;bernommen wurden: 
+
 	$ git branch -a
 	* master
 	  my-calc-branch
@@ -214,6 +127,8 @@ At this point, you should have a valid Git repository that has imported your bra
 
 It&#8217;s important to note how this tool namespaces your remote references differently. When you&#8217;re cloning a normal Git repository, you get all the branches on that remote server available locally as something like `origin/[branch]` - namespaced by the name of the remote. However, `git svn` assumes that you won&#8217;t have multiple remotes and saves all its references to points on the remote server with no namespacing. You can use the Git plumbing command `show-ref` to look at all your full reference names:
 
+An dieser Stelle soll die wichtige Anmerkung nicht fehlen, dass dieses Tool die Namespaces Deiner entfernten Referenzen unterschiedlich behandelt. Wenn Du ein normales Git-Repository klonst, werden alle Branches auf jenem entfernten Server f&#252;r Dich lokal verf&#252;gbar gemacht, zum Beispiel als `origin/[branch]`, der Namespace entspricht dem Namen des entfernten Branches. `git svn` get allerdings davon aus, dass es nicht mehrere entfernte Repositorys gibt und speichert daher seie Referenzen auf die Bereiche entfernter Server ohne Namespaces. Du kannst das Git-Kommando `show-ref` verwenden, um Dir die vollst&#228;ndigen Namen aller Referenzen anzeigen zu lassen:
+
 	$ git show-ref
 	1cbd4904d9982f386d87f88fce1c24ad7c0f0471 refs/heads/master
 	aee1ecc26318164f355a883f5d99cff0c852d3c4 refs/remotes/my-calc-branch
@@ -225,16 +140,22 @@ It&#8217;s important to note how this tool namespaces your remote references differe
 
 A normal Git repository looks more like this:
 
+Ein normales Git-Repository sieht dagegen eher so aus:
+
 	$ git show-ref
 	83e38c7a0af325a9722f2fdc56b10188806d83a1 refs/heads/master
 	3e15e38c198baac84223acfc6224bb8b99ff2281 refs/remotes/gitserver/master
 	0a30dd3b0c795b80212ae723640d4e5d48cabdff refs/remotes/origin/master
 	25812380387fdd55f916652be4881c6f11600d6f refs/remotes/origin/testing
 
-You have two remote servers: one named `gitserver` with a `master` branch; and another named `origin` with two branches, `master` and `testing`. 
+You have two remote servers: one named `gitserver` with a `master` branch; and another named `origin` with two branches, `master` and `testing`.
+
+Du hast zwei entfernte Server: einen, der `gitserver` hei&#223;t und einen `master`-Branch beinhaltet, und einen weiteren, der `origin` hei&#223;t und zwei Branches (`master` und `testing`) enth&#228;lt.
 
 Notice how in the example of remote references imported from `git svn`, tags are added as remote branches, not as real Git tags. Your Subversion import looks like it has a remote named tags with branches under it.
 
+Hast Du bemerkt, dass die entfernten Referenzen, die von `git svn` im Beispiel importiert wurden, nicht als echte Git-Tags importiert wurden, sondern als entfernte Branches? Dein Subversion-Import sieht aus als bes&#228;&#223;e er einen eigenen Remote-Bereich namens `tags` und unterhalb davon einzelne Branches.
+
 ### Committing Back to Subversion ###
 
 Now that you have a working repository, you can do some work on the project and push your commits back upstream, using Git effectively as a SVN client. If you edit one of the files and commit it, you have a commit that exists in Git locally that doesn&#8217;t exist on the Subversion server:</diff>
      <filename>de/08-git-and-other-scms/01-chapter8.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -2,6 +2,8 @@
 &quot;f&#252;r einen Commit markiert&quot; &#187; &quot;f&#252;r einen Commit vorgemerkt&quot; / &quot;vorgesehen&quot;
 
 pointer: &quot;Zeiger&quot;, &quot;Pointer&quot;
+issue: &quot;Issue&quot;, &quot;Ticket&quot;, &quot;Tracker&quot;
+issue-tracking system: &quot;Issue-Tracking-System&quot;, &quot;Tracker-System&quot;, &quot;Ticket-System&quot;
 
 
 ???
@@ -13,4 +15,72 @@ Code Review
 Tree hash
 Committer
 Patch
-Merge: &quot;Merge&quot;, &quot;Zusammenf&#252;hrung&quot;, &quot;zusammenf&#252;hren&quot;
\ No newline at end of file
+&quot;Merge&quot;, &quot;Zusammenf&#252;hrung&quot;, &quot;zusammenf&#252;hren&quot;
+
+
+to version-control something - ?
+	&quot;Many people&#8217;s version-control method of choice is ...&quot;
+
+&quot;... Git began with a bit of creative destruction and fiery controversy&quot;
+	... entstand Git aus kreativem Chaos und hitziger Diskussion.
+
+&#220;berschrift: &quot;Snapshots, Not Differences&quot; - &quot;Snapshots, nicht Diffs&quot; ?
+
+
+source code, source	- Quellcode
+repository, repositories - Repository, Repositories
+remote repository - externes Repository
+branch, to branch - Branch, branchen
+	Zweig, Verzweigung, Arm - klingt alles ein bi&#223;chen bl&#246;d
+branching - Branching
+branching model - Branching Konzept
+stashing - Stashing
+interface - Interface
+commit, to commit - Commit, committen
+committer - Comitter
+merge - Merge
+history - Historie
+to push - (auf den Server) hochladen, pushen?
+to pull - &#196;nderungen (vom Server) herunterladen/ziehen, pullen?
+checksum, to checksum - Checksumme, Checksumme berechnen
+hash - Hash
+SHA-1 hash - SHA-1 Hash
+to stage - stagen, f&#252;r einen Commit vormerken, zur Staging Area hinzuf&#252;gen
+to unstage - aus der Staging Area entfernen/nehmen
+to clone - klonen
+checkout, to check in/out - Checkout, ein/auschecken (??)
+snapshot - Snapshot 
+	Schnappschu&#223; klingt bl&#246;d 
+	Speicherauszug sagt Leo http://dict.leo.org/ende?search=Snapshot
+online/offline - online/offline
+hooks (&quot;you may lose some server-side hooks&quot;) - ???
+to track a file - &#196;nderungen an einer Datei nachverfolgen, eine Datei versionieren
+a tracked file - eine versionierte Datei, eine Datei unter Versionskontrolle, eine Datei deren &#196;nderungen nachverfolgt werden
+a tracking branch - Tracking Branch, ein Branch, der einem externen Branch folgt ???
+tracking branch information - Tracking Branch Information
+lightweight Tag - leichter Tag (???), schlanker Tag (???)
+annotated Tag - kommentierter Tag (???), annotierter Tag (???)
+tagged - getagged (???)
+home directory - Home Verzeichnis (???)
+killer feature - &quot;Killer Feature&quot; (???)
+to fork - forken
+workflow - Workflow
+whitespace errors - Whitespace Fehler
+to maintain a projekt, projekt maintainer - ein Projekt betreiben, Betreiber des Projektes (???)
+apply a patch - einen Patch anwenden (???)
+contribute to a projekt - zu einem Projekt &#196;nderungen beitragen
+to apply cleanly - sauber anwendbar sein (???)
+legacy patches - ???
+contribution - Beitrag, &#196;nderungen
+contributor - Mitarbeiter (???)
+
+files and file patterns - ??? Dateien und Dateimuster?
+filename expansion - Dateinamen-Expansion
+to expand file names - Dateinamen expandieren, vervollst&#228;ndigen (???)
+
+# Kap 2
+Zeile 275, Ende des Absatzes: &quot;... - the patch, as it were.&quot; ???
+Zeile 749, &quot;to get credit&quot;: Anerkennung zollen (???)
+Zeile 753, &quot;nice little ASCII graph&quot;: netten, kleiner ASCII Graph (???)
+Zeile 799, &quot;to pipe through a pager&quot;: durch einen Pager leiten (???)
+Zeile 915, &quot;to wrangle the staging area&quot;: &#196;nderungen in der Staging Area verwalten (???)
\ No newline at end of file</diff>
      <filename>de/NOTES</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>ec3d30fac521b1c7fad01f52777a85278fd2fb73</id>
    </parent>
    <parent>
      <id>d4fc551497fab9a2b47b5506977fdbf21845429c</id>
    </parent>
  </parents>
  <author>
    <name>TAKAGI Masahiro</name>
    <email>matakagi@gmail.com</email>
  </author>
  <url>http://github.com/darashi/progit/commit/3da9f172c7cf7c567d80b12e672b62b1056c4dfa</url>
  <id>3da9f172c7cf7c567d80b12e672b62b1056c4dfa</id>
  <committed-date>2009-09-01T17:51:57-07:00</committed-date>
  <authored-date>2009-09-01T17:51:57-07:00</authored-date>
  <message>Merge branch 'master' of git://github.com/progit/progit into progit/master</message>
  <tree>54d504ffa2d8d1bc5d9acc5db2514c6dabffeb40</tree>
  <committer>
    <name>TAKAGI Masahiro</name>
    <email>matakagi@gmail.com</email>
  </committer>
</commit>
