6 git-branch - Auflisten, Erzeugen oder Löschen von Entwicklungszweigen (branches)
11 'git branch' [--color | --no-color] [-r | -a]
12 [-v [--abbrev=<length> | --no-abbrev]]
13 [(--merged | --no-merged | --contains) [<commit>]]
14 'git branch' [--track | --no-track] [-l] [-f] <branchname> [<start-point>]
15 'git branch' (-m | -M) [<oldbranch>] <newbranch>
16 'git branch' (-d | -D) [-r] <branchname>...
21 Wird der Befehl ohne Argumente aufgerufen, wird eine Liste der im
22 Projektarchiv existierenden Entwicklungszweige (branches) ausgegeben,
23 wobei der aktuelle Entwicklungszweig mit einem Sternchen ('*')
24 hervorgehoben wird. die Option '-r' bewirkt, daß beobachtete
25 Entwicklungszweige eines fernen Projektarchivs (remote tracking branches)
26 angezeigt werden, bei '-a' werden beide Arten aufgelistet.
28 Mittels '--contains' werden nur jene Entwicklungszweige (branches) angezeigt,
29 welche die benannte Eintragung (commit) beinhalten (mit anderen Worten: jene
30 Entwicklungszweige deren letzte Eintragung direkt oder indirekt darauf
31 beruht). Mit '--merged' werden alle Entwicklungszweige (branches) angezeigt,
32 welche in die benannte Eintragung (commit) zusammengeführt (merged) wurden
33 (mit anderen Worten jene Entwicklungszweige die von der benannten Eintragung
34 aus erreichbar sind). Mit '--no-merged' werden nur Entwicklungszweige
35 angezeigt die nicht in die angegebene Eintragung zusammengeführt wurden.
36 Gibt man das <commit> Argument nicht an, wird standardmäßig 'HEAD'
37 (also die letze Eintragung des aktuellen Entwicklungszweiges) verwendet.
39 Beim zweiten Beispiel wird ein Entwicklungszweig (branch) mit dem Namen
40 <branchname> erzeugt. Dieser startet ab der mit <start-point> angegebenen
41 Eintragung (commit). Wird kein <start-point> angegeben, beginnt der
42 neu erzeugte Entwicklungszweig mit der letzten Version des aktuellen
45 Beachte das dies einen neuen Entwicklungszweig anlegt, aber der aktuelle
46 Arbeitsbaum nicht auf diesen umgeschalten wird. Dies kann mit
47 'git checkout <newbranch>' erreicht werden.
49 Wird ein lokaler Entwicklungszweig (branch) von einem fernen (remote branch)
50 abgeleitet setzt git diesen so auf, daß 'git pull' eine ordnungsgemäße
51 Zusammenführung (merge) durchführen kann. Dieses Verhalten kann global
52 durch das 'branch.autosetupmerge' Konfigurationsflag geändert werden.
53 Diese Option kann durch Verwendung der '--track' und '--no-track'
56 Durch die '-m' oder '-M' option wird <oldbranch> in <newbranch>
57 umbenannt. Hat <oldbranch> einen passenden reflog (siehe 'git reflog'),
58 wird er auf <newbranch> umbenannt und zusätzlich wird ein reflog
59 Eintrag für die Umbenennung erzeugt. Existiert <newbranch> bereits,
60 muß '-M' verwendet werden um die Umbenennung zu erzwingen.
62 Durch die '-d' oder '-D' Option wird '<branchname>' gelöscht.
63 Man kann auch mehr als einen zu löschenden Entwicklungszweig angeben.
64 Hat der Entwicklungszweig einen reflog, dann wird dieser ebenfalls gelöscht.
66 Wird '-r' gemeinsam mit der '-d' Option verwendet wird die Referenz auf
67 den fernen Entwicklungszweig (remote-tracking branch) gelöscht. Dies macht
68 nur dann Sinn, wenn der Entwicklungszweig im fernen Projektarchiv nicht
69 mehr existiert, oder wenn 'git fetch' so konfiguriert wurde, daß dieser
70 nicht mehr geholt wird. Siehe auch den 'prune' Unterbefehl von
71 linkgit:git-remote[1] um alle nicht mehr benötigten remote-tracking
72 Entwicklungszweige zu löschen.
78 Lösche einen Entwicklungszweig. Dieser muß komplett mit dem
79 HEAD zusammengeführt (merged) worden sein.
82 Lösche einen Entwicklungszweig unabhängig davon ob er schon
83 zusammengeführt (merged) wurde.
86 Erzeuge einen reflog für den Entwicklungszweig. Dies aktiviert
87 die Aufzeichnung aller Änderungen in 'ref', wodurch die Verwendung
88 von datumsbasierten sha1 Ausdrücken wie "<branchname>@\{yesterday}"
92 Erzwinge das Erzeugen eines neuen Entwicklungszweigs, auch wenn das
93 die Löschung eines bereits bestehenden Entwicklungszweiges mit
94 dem gleichen Namen bedeutet.
97 Verschiebe/Umbenenne einen Entwicklungszweig und den
101 Verschiebe/Umbenenne einen Entwicklungszweig, auch wenn der
102 neue Name bereits existiert.
105 Zeige den aktuellen, lokale und ferne Entwicklungszweige
106 in unterschiedlichen Farben an.
109 Schalte die färbige Ausgabe von Entwicklungszweigen aus, auch wenn
110 dies per Konfigurationsdatei eingeschalten wurde.
113 Auflisten oder Löschen (wenn die '-d' Option gleichzeitig verwendet
114 wird) der Referenzen auf fernen Entwicklungszweige
115 (remote-tracking branches).
118 Zeige sowohl lokale wie auch remote-tracking Entwicklungszweige an.
122 Zeige den sha1 und die erste Zeile (subject line) der
123 Eintragungsbemerkung (commit message) für jede Kopfzeile an.
126 Ändere die minimale Länge der auszugebenden Zeichen des sha1.
127 Der Standardwert ist 7.
130 Zeige die volle Länge des sha1, anstatt ihn abzukürzen.
133 Beim Erzeugen eines neuen Entwicklungszweiges (branch) wird die
134 Konfiguration so eingestellt, daß 'git pull' automatisch
135 die Daten des Entwicklungszweiges vom fernen Projektarchiv holt.
136 Dies ist sinnvoll, wenn Änderungen immer vom gleichen fernen
137 Entwicklungszweig geholt werden, ohne ein explizites
138 'git pull <repository> <refspec>' ausführen zu müssen. Dies
139 ist der Standard falls von einem fernen Entwicklungszweig aus
140 gestartet wird. Setzt man die 'branch.autosetupmerge'
141 Konfigurationsvariable auf 'false', verhalten sich die Befehle
142 'git checkout' und 'git branch' so als ob '--no-track' angegeben
143 wurde. Setzt man sie auf 'always' um dieses Verhalten auch für
144 locale Entwicklungszweige zum Standard zu machen.
147 Dies ist das Gegenteil der '--track' Option, wodurch 'git pull'
148 nicht mehr automatisch auf den fernen Entwicklungszweig (remote branch)
151 --contains <commit>::
152 Zeige nur jene Entwicklungszweige (branches) an, welche die
153 angegebene Eintragung (commit) enthalten.
156 Zeige nur jene Entwicklungszweige (branches) an, die vollständig
157 in den aktuellen Enwicklungszweig (HEAD) zusammengeführt (merged)
161 Zeige keine Entwicklungszweige (branches) an die in den aktuellen
162 Enwicklungszweig (HEAD) zusammengeführt (merged) wurden.
165 Der Name des Entwicklungszweiges (branch) der erzeugt oder
166 gelöscht werden soll. Der Name muß alle Prüfungen die in
167 linkgit:git-check-ref-format[1] definiert sind erfüllen.
168 Dadurch können sich Einschränkungen in der im Namen
169 des Entwicklungszweiges vorkommenden Zeichen ergeben.
172 Der HEAD des neu erzeugten Entwicklungszweigs (branch) wird mit
173 <start-point> beginnen, wobei es sich dabei um den sha1 einer
174 Eintragung (commit), den Namen eines anderen Entwicklungszweigs
175 (branch) oder einer Markierung (tag). Wird dieser Parameter nicht
176 angegeben, so wird der aktuelle Entwicklungszweit als Startpunkt
180 Der Name eines existierenden Entwicklungszweiges (branch) der
181 umbenannt werden soll.
184 Der neue Name für einen existierenden Entwicklungszweig (branch).
185 Es gelten die gleichen Einschränkungen wie für <branchname>.
191 Weiterentwicklungs ausgehend von einer bekannten Markierung (tag)::
194 $ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6
196 $ git branch my2.6.14 v2.6.14 <1>
197 $ git checkout my2.6.14
200 <1> Dieser und der nachfolgende Schritt können in einem einzigen Befehl
201 "checkout -b my2.6.14 v2.6.14" kombiniert werden.
203 Löschen eines nicht mehr benötigten Entwicklungszweiges (branch)::
206 $ git clone git://git.kernel.org/.../git.git my.git
208 $ git branch -d -r origin/todo origin/html origin/man <1>
209 $ git branch -D test <2>
212 <1> Lösche die remote-tracking Entwicklungszweige "todo", "html", "man".
213 Das nächste 'git fetch' oder 'git pull' wird diese wieder anlegen, außer
214 man konfiguriert git entsprechend. Siehe auch linkgit:git-fetch[1].
215 <2> Lösche den Entwicklungszweig "test", selbst dann wenn der "master"
216 (oder der gerade aktiven Entwicklungszweig) nicht alle Eintragungen (commits)
217 dieses Entwicklungszweigs enthält.
223 Will man einen Entwicklungszweig (branch) erzeugen und diesen
224 sofort abrufen (checkout), ist es einfacher dies in einem Schritt,
225 durch Ausführen des Befehls 'git checkout' mit der '-b' Option, zu machen.
227 Die Optionen `--contains`, `--merged` und `--no-merged` erfüllen drei
228 verwandte aber doch unterschiedliche Aufgaben:
230 - `--contains <commit>` wird verwendet um alle Entwicklungszweige (branches)
231 zu finden in denen <commit> vorkommt, bevor dieser mit 'git commit --amend'
232 oder 'git rebase' verändert wird.
234 - `--merged` wird verwendet um festzustellen, welche Entwicklungszweige
235 (branches) ohne Informationen zu verlieren gelöscht werden können, da
236 diese sowieso vollständig in HEAD enthalten sind.
238 - `--no-merged` wird verwendet um Entwicklungszweige (branches) zu finden
239 die Kandidaten für eine Zusammenführung (merge) in den HEAD sind, da diese
240 noch nicht vollständig in HEAD beinhaltet sind.
244 Geschrieben von Linus Torvalds <torvalds@osdl.org> und Junio C Hamano <gitster@pobox.com>
248 Dokumentiert von Junio C Hamano und der Git-Mailingliste <git@vger.kernel.org>.
252 Teil der linkgit:git[1] Suite