17. August 2013

Branches

Ein Branch ist eine Referenz auf einen bestimmten Commit. In einem neuen Repository existiert standardmäßig eine solche Referenz master:

$ git branch -v                     # Branches mit referenziertem Commit auflisten
* master 068b9b9 the 3rd commit     # * = Branch master ist aktiv

Branches erstellen

Neue Branches können jederzeit angelegt werden, z.B. für jedes neue Feature (topic branches) oder Entwicklungslinien (z.B. Wartung, aktuelles Release, nächstes Release). Dabei bleibt der aktuelle Branch aktiv:

$ git branch <branchname> [<start-point>]
$ git branch newfeature                    # Neuer Branch newfeature
                                           # basierend auf HEAD
$ git branch bugfix 1.0                    # Neuer Branch newfeature
                                           # basierend auf 1.0

$ git branch
* master
  newfeature
  bugfix

Branches wechseln

Der Working Tree und Index wird mit git checkout in einen bestimmten Zustand gebracht (= zu einem Branch wechseln, einen Branch auschecken). Mit -b wird zuvor ein neuer Branch angelegt:

$ git checkout [<branch>]
$ git checkout -b [<branch>]
$ git checkout -b [<branch>] [<start-point>]
$ git checkout newfeature

Commits in einem Branch

Wird ein neuer Commit erstellt, wird dadurch die Referenz des aktuellen Branches auf den soeben erstellten Commit gesetzt:

$ git checkout -b newfeature
$ edit somefile.txt
$ git commit -a -m "api draft"

$ git checkout master
$ edit somefile.txt
$ git commit -a -m "bugfix"

Aufgaben

  1. Fügen Sie einige Zeilen in die readme.txt ein und committen Sie diese Änderung.
  2. Erstellen Sie zwei Branches bug1 und bug2 und nehmen Sie in beiden Branches eine Änderung an der exakt selben Stelle in der Datei readme.txt vor.
  3. Erstellen Sie ein neuen Feature-Branch feature1, der eine andere Stelle in der Datei verändert.