Merge branch 'master' of ssh://Culex@repo.or.cz/srv/git/gitman-de
[gitman-de.git] / git-branch-de.txt
blob7cce9f5650e36db35993be9989e1fb71f505bfb3
1 git-branch(1)
2 =============
4 NAME
5 ----
6 git-branch - Auflisten, Erzeugen oder Löschen von Entwicklungszweigen (branches)
8 SYNOPSIS
9 --------
10 [verse]
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>...
18 DESCRIPTION
19 -----------
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
43 Entwicklungszweigs.
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'
54 überschrieben werden.
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.
75 OPTIONS
76 -------
77 -d::
78         Lösche einen Entwicklungszweig. Dieser muß komplett mit dem
79         HEAD zusammengeführt (merged) worden sein.
81 -D::
82         Lösche einen Entwicklungszweig unabhängig davon ob er schon
83         zusammengeführt (merged) wurde.
85 -l::
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}"
89         ermöglicht wird.
91 -f::
92         Erzwinge das Erzeugen eines neuen Entwicklungszweigs, auch wenn das
93         die Löschung eines bereits bestehenden Entwicklungszweiges mit
94         dem gleichen Namen bedeutet.
96 -m::
97         Verschiebe/Umbenenne einen Entwicklungszweig und den
98         zugehörigen reflog.
100 -M::
101         Verschiebe/Umbenenne einen Entwicklungszweig, auch wenn der
102         neue Name bereits existiert.
104 --color::
105         Zeige den aktuellen, lokale und ferne Entwicklungszweige 
106         in unterschiedlichen Farben an.
108 --no-color::
109         Schalte die färbige Ausgabe von Entwicklungszweigen aus, auch wenn
110         dies per Konfigurationsdatei eingeschalten wurde.
112 -r::
113         Auflisten oder Löschen (wenn die '-d' Option gleichzeitig verwendet
114         wird) der Referenzen auf fernen Entwicklungszweige 
115         (remote-tracking branches).
117 -a::
118         Zeige sowohl lokale wie auch remote-tracking Entwicklungszweige an.
120 -v::
121 --verbose::
122         Zeige den sha1 und die erste Zeile (subject line) der 
123         Eintragungsbemerkung (commit message) für jede Kopfzeile an.
125 --abbrev=<length>::
126         Ändere die minimale Länge der auszugebenden Zeichen des sha1.
127         Der Standardwert ist 7.
129 --no-abbrev::
130         Zeige die volle Länge des sha1, anstatt ihn abzukürzen.
132 --track::
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.
146 --no-track::
147         Dies ist das Gegenteil der '--track' Option, wodurch 'git pull'
148         nicht mehr automatisch auf den fernen Entwicklungszweig (remote branch)
149         zugreift.
151 --contains <commit>::
152         Zeige nur jene Entwicklungszweige (branches) an, welche die
153         angegebene Eintragung (commit) enthalten.
155 --merged::
156         Zeige nur jene Entwicklungszweige (branches) an, die vollständig
157         in den aktuellen Enwicklungszweig (HEAD) zusammengeführt (merged)
158         wurden.
160 --no-merged::
161         Zeige keine Entwicklungszweige (branches) an die in den aktuellen
162         Enwicklungszweig (HEAD) zusammengeführt (merged) wurden.
164 <branchname>::
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.
171 <start-point>::
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
177         verwendet.
179 <oldbranch>::
180         Der Name eines existierenden Entwicklungszweiges (branch) der
181         umbenannt werden soll.
183 <newbranch>::
184         Der neue Name für einen existierenden Entwicklungszweig (branch).
185         Es gelten die gleichen Einschränkungen wie für <branchname>.
188 Examples
189 --------
191 Weiterentwicklungs ausgehend von einer bekannten Markierung (tag)::
193 ------------
194 $ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6
195 $ cd my2.6
196 $ git branch my2.6.14 v2.6.14   <1>
197 $ git checkout my2.6.14
198 ------------
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)::
205 ------------
206 $ git clone git://git.kernel.org/.../git.git my.git
207 $ cd my.git
208 $ git branch -d -r origin/todo origin/html origin/man   <1>
209 $ git branch -D test                                    <2>
210 ------------
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.
220 Notes
221 -----
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.
242 Author
243 ------
244 Geschrieben von Linus Torvalds <torvalds@osdl.org> und Junio C Hamano <gitster@pobox.com>
246 Documentation
247 --------------
248 Dokumentiert von Junio C Hamano und der Git-Mailingliste <git@vger.kernel.org>.
252 Teil der linkgit:git[1] Suite