file grandmasters.txt ready
[gitmagic.git] / de / pot / grandmaster.po
blobd74ae10a05e58687cc1aa218558e234af3f535ec
1 # Git Magic - A guide to using Git
2 # This file is distributed under the GNU GENERAL PUBLIC LICENSE Version 3.
3 # Benn Lynn <benlynn@gmail.com>, 2007.
4 # Armin Stebich <armin@lordofbikes.de>, 2010, 2011.
6 msgid ""
7 msgstr ""
8 "Project-Id-Version: Git Magic deutsch\n"
9 "Report-Msgid-Bugs-To: bennlynn@gmail.com\n"
10 "POT-Creation-Date: 2010-10-30 08:21+0300\n"
11 "PO-Revision-Date: 2011-07-07 19:00+0200\n"
12 "Last-Translator: Armin Stebich <armin@lordofbikes.de>\n"
13 "Language-Team: DE <gitmagic@lordofbikes.de>\n"
14 "Language: de\n"
15 "MIME-Version: 1.0\n"
16 "Content-Type: text/plain; charset=UTF-8\n"
17 "Content-Transfer-Encoding: UTF-8\n"
18 "Plural-Forms: \n"
20 #. type: Plain text
21 #: ../en/grandmaster.txt:2
22 msgid "== Git Grandmastery =="
23 msgstr "== Git für Fortgeschrittene =="
25 #. type: Plain text
26 #: ../en/grandmaster.txt:7
27 msgid ""
28 "By now, you should be able to navigate the *git help* pages and understand "
29 "almost everything. However, pinpointing the exact command required to solve "
30 "a given problem can be tedious. Perhaps I can save you some time: below are "
31 "some recipes I have needed in the past."
32 msgstr ""
33 "Mittlerweile solltest Du Dich in den *git help* Seiten zurechtfinden und das "
34 "meiste verstanden haben. Trotzdem kann es langwierig sein, den exakten "
35 "Befehl zur Lösung einer bestimmten Aufgabe herauszufinden. Vielleicht kann "
36 "ich Dir etwas Zeit sparen: Nachfolgend findest Du ein paar Rezepte, die ich "
37 "in der Vergangenheit gebraucht habe."
39 #. type: Plain text
40 #: ../en/grandmaster.txt:9
41 msgid "=== Source Releases ==="
42 msgstr "=== Quellcode veröffentlichen ==="
44 #. type: Plain text
45 #: ../en/grandmaster.txt:12
46 msgid ""
47 "For my projects, Git tracks exactly the files I'd like to archive and "
48 "release to users. To create a tarball of the source code, I run:"
49 msgstr ""
50 "Bei meinen Projekten verwaltet Git genau die Dateien, die ich archivieren "
51 "und für andere Benutzer veröffentlichen will. Um ein tarball-Archiv des "
52 "Quellcodes zu erzeugen, verwende ich den Befehl:"
54 #. type: Plain text
55 #: ../en/grandmaster.txt:14
56 #, no-wrap
57 msgid " $ git archive --format=tar --prefix=proj-1.2.3/ HEAD\n"
58 msgstr " $ git archive --format=tar --prefix=proj-1.2.3/ HEAD\n"
60 #. type: Plain text
61 #: ../en/grandmaster.txt:16
62 msgid "=== Commit What Changed ==="
63 msgstr "=== 'Commite' Änderungen ==="
65 #. type: Plain text
66 #: ../en/grandmaster.txt:19
67 msgid ""
68 "Telling Git when you've added, deleted and renamed files is troublesome for "
69 "certain projects. Instead, you can type:"
70 msgstr ""
71 "Git mitzuteilen, welche Dateien man hinzugefügt, gelöscht und umbenannt hat, "
72 "ist für manche Projekte sehr mühsam. Stattdessen kann man folgendes eingeben:"
74 #. type: Plain text
75 #: ../en/grandmaster.txt:22
76 #, no-wrap
77 msgid ""
78 " $ git add .\n"
79 " $ git add -u\n"
80 msgstr ""
81 " $ git add .\n"
82 " $ git add -u\n"
84 #. type: Plain text
85 #: ../en/grandmaster.txt:27
86 msgid ""
87 "Git will look at the files in the current directory and work out the details "
88 "by itself. Instead of the second add command, run `git commit -a` if you "
89 "also intend to commit at this time. See *git help ignore* for how to specify "
90 "files that should be ignored."
91 msgstr ""
92 "Git wird sich die Dateien im aktuellen Verzeichnis ansehen und sich die "
93 "Details selbst erarbeiten. Anstelle des zweiten Befehl kann man auch `git "
94 "commit -a` ausführen, falls man an dieser Stelle ohnehin 'comitten' möchte. "
95 "Siehe *git help ignore* um zu sehen, wie man Dateien definiert, die "
96 "ignoriert werden sollen."
98 #. type: Plain text
99 #: ../en/grandmaster.txt:29
100 msgid "You can perform the above in a single pass with:"
101 msgstr "Man kann das aber auch in einem einzigen Schritt ausführen mit:"
103 #. type: Plain text
104 #: ../en/grandmaster.txt:31
105 #, no-wrap
106 msgid " $ git ls-files -d -m -o -z | xargs -0 git update-index --add --remove\n"
107 msgstr " $ git ls-files -d -m -o -z | xargs -0 git update-index --add --remove\n"
109 #. type: Plain text
110 #: ../en/grandmaster.txt:35
111 msgid ""
112 "The *-z* and *-0* options prevent ill side-effects from filenames containing "
113 "strange characters. As this command adds ignored files, you may want to use "
114 "the `-x` or `-X` option."
115 msgstr ""
116 "Die *-z* und *-0* Optionen verhindern unerwünschte Nebeneffekte durch "
117 "Dateinamen mit ungewöhnlichen Zeichen. Da diese Anweisung aber auch zu "
118 "ignorierende Dateien hinzufügt, kann man noch die `-x` oder `-X` Option "
119 "hinzufügen."
121 #. type: Plain text
122 #: ../en/grandmaster.txt:37
123 msgid "=== My Commit Is Too Big! ==="
124 msgstr "=== Mein 'Commit' ist zu groß! ==="
126 #. type: Plain text
127 #: ../en/grandmaster.txt:41
128 msgid ""
129 "Have you neglected to commit for too long? Been coding furiously and "
130 "forgotten about source control until now? Made a series of unrelated "
131 "changes, because that's your style?"
132 msgstr ""
133 "Hast Du es zu lange versäumt zu 'comitten'? Hast Du so versessen "
134 "programmiert, daß Du darüber die Quellcodeverwaltung vergessen hast? Machst "
135 "Du eine Serie von unabhängigen Änderungen, weil es Dein Stil ist?"
137 #. type: Plain text
138 #: ../en/grandmaster.txt:43
139 msgid "No worries. Run:"
140 msgstr "Keine Sorge, gib ein:"
142 #. type: Plain text
143 #: ../en/grandmaster.txt:45
144 #, no-wrap
145 msgid " $ git add -p\n"
146 msgstr " $ git add -p\n"
148 #. type: Plain text
149 #: ../en/grandmaster.txt:49
150 msgid ""
151 "For each edit you made, Git will show you the hunk of code that was changed, "
152 "and ask if it should be part of the next commit. Answer with \"y\" or \"n\". "
153 "You have other options, such as postponing the decision; type \"?\" to learn "
154 "more."
155 msgstr ""
156 "Für jede Änderung, die Du gemacht hast, zeigt Git Dir die Codepassagen, die "
157 "sich geändert haben und fragt ob sie Teil des nächsten 'Commit' sein sollen. "
158 "Antworte mit \"y\" für Ja oder \"n\" für Nein. Du hast auch noch andere "
159 "Optionen, z.B. den Aufschub der Entscheidung; drücke \"?\" um mehr zu "
160 "erfahren."
162 #. type: Plain text
163 #: ../en/grandmaster.txt:51
164 msgid "Once you're satisfied, type"
165 msgstr "Wenn Du zufrieden bist, gib"
167 #. type: Plain text
168 #: ../en/grandmaster.txt:53
169 #, no-wrap
170 msgid " $ git commit\n"
171 msgstr " $ git commit\n"
173 #. type: Plain text
174 #: ../en/grandmaster.txt:56
175 msgid ""
176 "to commit precisely the changes you selected (the 'staged' changes). Make "
177 "sure you omit the *-a* option, otherwise Git will commit all the edits."
178 msgstr ""
179 "ein um exakt die ausgewählten Änderungen zu 'comitten' (die \"inszenierten\" "
180 "Änderungen). Achte darauf, nicht die Option *-a* einzusetzen, anderenfalls "
181 "wird Git alle Änderungen 'comitten'."
183 #. type: Plain text
184 #: ../en/grandmaster.txt:63
185 msgid ""
186 "What if you've edited many files in many places? Reviewing each change one "
187 "by one becomes frustratingly mind-numbing. In this case, use *git add -i*, "
188 "whose interface is less straightforward, but more flexible. With a few "
189 "keystrokes, you can stage or unstage several files at a time, or review and "
190 "select changes in particular files only. Alternatively, run *git commit \\--"
191 "interactive* which automatically commits after you're done."
192 msgstr ""
193 "Was ist, wenn Du viele Dateien an verschiedenen Orten bearbeitet hast? Jede "
194 "Datei einzeln nachzuprüfen ist frustrierend und ermüdend. In diesem Fall "
195 "verwende *git add -i*, dessen Bedienung ist nicht ganz einfach, dafür aber "
196 "sehr flexibel. Mit ein paar Tastendrücken kannst Du mehrere geänderte "
197 "Dateien für den 'Commit' hinzufügen ('stage') oder entfernen ('unstage') "
198 "oder Änderungen einzelner Dateien nachprüfen und hinzufügen. Alternativ "
199 "kannst Du *git commit \\--interactive* verwenden, was dann automatisch die "
200 "ausgewählten Änderungen 'commited' nachdem Du fertig bist."
202 #. type: Plain text
203 #: ../en/grandmaster.txt:65
204 msgid "=== The Index: Git's Staging Area ==="
205 msgstr "=== Der Index: Git's Bereitstellungsraum ==="
207 #. type: Plain text
208 #: ../en/grandmaster.txt:71
209 msgid ""
210 "So far we have avoided Git's famous 'index', but we must now confront it to "
211 "explain the above. The index is a temporary staging area. Git seldom "
212 "shuttles data directly between your project and its history. Rather, Git "
213 "first writes data to the index, and then copies the data in the index to its "
214 "final destination."
215 msgstr ""
216 "Bis jetzt haben wir Git's berühmten 'Index' gemieden, aber nun müssen wir "
217 "uns mit ihm auseinandersetzen um das bisherige zu erklären. Der Index ist "
218 "ein temporärer Bereitstellungsraum. Git tauscht selten Daten direkt zwischen "
219 "Deinem Projekt und seiner Versionsgeschichte aus. Vielmehr schreibt Git die "
220 "Daten zuerst in den Index, danach kopiert es die Daten aus dem Index an "
221 "ihren eigentlichen Bestimmungsort."
223 #. type: Plain text
224 #: ../en/grandmaster.txt:77
225 msgid ""
226 "For example, *commit -a* is really a two-step process. The first step places "
227 "a snapshot of the current state of every tracked file into the index. The "
228 "second step permanently records the snapshot now in the index. Committing "
229 "without the *-a* option only performs the second step, and only makes sense "
230 "after running commands that somehow change the index, such as *git add*."
231 msgstr ""
232 "Zum Beispiel ist *commit -a* eigentlich ein zweistufiger Prozess. Der erste "
233 "Schritt erstellt einen Schnappschuß des aktuellen Status jeder überwachten "
234 "Datei im Index. Der zweite Schritt speichert dauerhaft den Schnappschuß, der "
235 "sich nun im Index befindet. Ein 'Commit' ohne die *-a* Option führt nur den "
236 "zweiten Schritt aus und macht nur wirklich Sinn, wenn zuvor eine Anweisung "
237 "angewendet wurde, welche den Index verändert, wie zum Beispiel *git add*."
239 #. type: Plain text
240 #: ../en/grandmaster.txt:79
241 msgid ""
242 "Usually we can ignore the index and pretend we are reading straight from and "
243 "writing straight to the history. On this occasion, we want finer control, so "
244 "we manipulate the index. We place a snapshot of some, but not all, of our "
245 "changes into the index, and then permanently record this carefully rigged "
246 "snapshot."
247 msgstr ""
248 "Normalerweise können wir den Index ignorieren und so tun als würden wir "
249 "direkt aus der Versionsgeschichte lesen oder in sie schreiben. In diesem "
250 "Fall wollen wir aber mehr Kontrolle, also manipulieren wir den Index. Wir "
251 "erstellen einen Schnappschuß einiger, aber nicht aller unser Änderungen im "
252 "Index und speichern dann diesen sorgfältig zusammengestellten Schnappschuß "
253 "permanent."
255 #. type: Plain text
256 #: ../en/grandmaster.txt:81
257 msgid "=== Don't Lose Your HEAD ==="
258 msgstr "=== Verliere nicht Deinen KOPF ==="
260 #. type: Plain text
261 #: ../en/grandmaster.txt:83
262 msgid ""
263 "The HEAD tag is like a cursor that normally points at the latest commit, "
264 "advancing with each new commit. Some Git commands let you move it. For "
265 "example:"
266 msgstr ""
267 "Der HEAD Bezeichner ist wie ein Cursor, der normalerweise auf den jüngsten "
268 "'Commit' zeigt und mit jedem neuen 'Commit' voranschreitet. Einige Git "
269 "Anweisungen lassen Dich ihn manipulieren. Zum Beispiel:"
271 #. type: Plain text
272 #: ../en/grandmaster.txt:85
273 #, no-wrap
274 msgid " $ git reset HEAD~3\n"
275 msgstr " $ git reset HEAD~3\n"
277 #. type: Plain text
278 #: ../en/grandmaster.txt:87
279 msgid ""
280 "will move the HEAD three commits back. Thus all Git commands now act as if "
281 "you hadn't made those last three commits, while your files remain in the "
282 "present. See the help page for some applications."
283 msgstr ""
284 "bewegt den HEAD Bezeichner drei 'Commits' zurück. Dadurch agieren nun alle "
285 "Git Anweisungen als hätte es die drei letzten 'Commits' nicht gegeben, "
286 "während deine Dateien unverändert erhalten bleiben. Siehe auf der Git "
287 "Hilfeseite für einige Anwendungsbeispiele."
289 #. type: Plain text
290 #: ../en/grandmaster.txt:89
291 msgid ""
292 "But how can you go back to the future? The past commits know nothing of the "
293 "future."
294 msgstr ""
295 "Aber wie kannst Du zurück in die Zukunft? Die vergangenen 'Commits' wissen "
296 "nichts von der Zukunft."
298 #. type: Plain text
299 #: ../en/grandmaster.txt:91
300 msgid "If you have the SHA1 of the original HEAD then:"
301 msgstr "Wenn Du den SHA1 Schlüssel vom originalen HEAD hast, dann:"
303 #. type: Plain text
304 #: ../en/grandmaster.txt:93
305 #, no-wrap
306 msgid " $ git reset 1b6d\n"
307 msgstr " $ git reset 1b6d\n"
309 #. type: Plain text
310 #: ../en/grandmaster.txt:95
311 msgid ""
312 "But suppose you never took it down? Don't worry: for commands like these, "
313 "Git saves the original HEAD as a tag called ORIG_HEAD, and you can return "
314 "safe and sound with:"
315 msgstr ""
316 "Aber stell Dir vor, Du hast ihn niemals notiert? Keine Sorge: Für solche "
317 "Anweisungen sichert Git den original HEAD als Bezeichner mit dem Namen "
318 "ORIG_HEAD und Du kannst gesund und munter zurückkehren mit:"
320 #. type: Plain text
321 #: ../en/grandmaster.txt:97
322 #, no-wrap
323 msgid " $ git reset ORIG_HEAD\n"
324 msgstr " $ git reset ORIG_HEAD\n"
326 #. type: Plain text
327 #: ../en/grandmaster.txt:99
328 msgid "=== HEAD-hunting ==="
329 msgstr "=== KOPF-Jagd ==="
331 #. type: Plain text
332 #: ../en/grandmaster.txt:101
333 msgid ""
334 "Perhaps ORIG_HEAD isn't enough. Perhaps you've just realized you made a "
335 "monumental mistake and you need to go back to an ancient commit in a long-"
336 "forgotten branch."
337 msgstr ""
338 "Möglicherweise reicht ORIG_HEAD nicht aus. Vielleicht hast Du gerade "
339 "bemerkt, dass Du einen kapitalen Fehler gemacht hast und nun musst Du zu "
340 "einem uralten 'Commit' in einem länst vergessenen 'Branch' zurück."
342 #. type: Plain text
343 #: ../en/grandmaster.txt:106
344 msgid ""
345 "By default, Git keeps a commit for at least two weeks, even if you ordered "
346 "Git to destroy the branch containing it. The trouble is finding the "
347 "appropriate hash. You could look at all the hash values in `.git/objects` "
348 "and use trial and error to find the one you want. But there's a much easier "
349 "way."
350 msgstr ""
351 "Standardmäßig behält Git einen 'Commit' für mindesten zwei Wochen, sogar "
352 "wenn Du Git anweist den 'Branch' zu zerstören, in dem er enthalten ist. Das "
353 "Problem ist, den entsprechenden SHA1-Wert zu finden. Du kannst Dir alle SHA1-"
354 "Werte in `.git/objects` vornehmen und ausprobieren ob Du den gesuchten "
355 "'Commit' findest. Aber es gibt einen viel einfacheren Weg."
357 #. type: Plain text
358 #: ../en/grandmaster.txt:108
359 msgid ""
360 "Git records every hash of a commit it computes in `.git/logs`. The "
361 "subdirectory `refs` contains the history of all activity on all branches, "
362 "while the file `HEAD` shows every hash value it has ever taken. The latter "
363 "can be used to find hashes of commits on branches that have been "
364 "accidentally lopped off."
365 msgstr ""
366 "Git speichert jeden errechneten SHA1-Wert eines 'Commits' in `.git/logs`. "
367 "Das Unterverzeichnis `refs` enthält den Verlauf aller Aktivitäten auf allen "
368 "'Branches', während `HEAD` alle SHA1-Werte enthält, die jemals diese "
369 "Bezeichnung hatten. Die letztere kann verwendet werden um SHA1-Werte von "
370 "'Commits' zu finden, die sich in einem 'Branch' befanden, der versehentlich "
371 "gestutzt wurde."
373 #. type: Plain text
374 #: ../en/grandmaster.txt:110
375 msgid ""
376 "The reflog command provides a friendly interface to these log files. Try"
377 msgstr ""
378 "Die reflog Anweisung bietet eine benutzerfreundliche Schnittstelle zu diesen "
379 "Logdateien. Versuche"
381 #. type: Plain text
382 #: ../en/grandmaster.txt:112
383 #, no-wrap
384 msgid "  $ git reflog\n"
385 msgstr "  $ git reflog\n"
387 #. type: Plain text
388 #: ../en/grandmaster.txt:114
389 msgid "Instead of cutting and pasting hashes from the reflog, try:"
390 msgstr ""
391 "Anstatt SHA1-Werte aus dem reflog zu kopieren und einzufügen, versuche:"
393 #. type: Plain text
394 #: ../en/grandmaster.txt:116
395 #, no-wrap
396 msgid " $ git checkout \"@{10 minutes ago}\"\n"
397 msgstr " $ git checkout \"@{10 minutes ago}\"\n"
399 #. type: Plain text
400 #: ../en/grandmaster.txt:118
401 msgid "Or checkout the 5th-last visited commit via:"
402 msgstr "Oder rufe den fünftletzten 'Commit' ab, mit:"
404 #. type: Plain text
405 #: ../en/grandmaster.txt:120
406 #, no-wrap
407 msgid " $ git checkout \"@{5}\"\n"
408 msgstr " $ git checkout \"@{5}\"\n"
410 #. type: Plain text
411 #: ../en/grandmaster.txt:122
412 msgid ""
413 "See the ``Specifying Revisions'' section of *git help rev-parse* for more."
414 msgstr ""
415 "Siehe in der ``Specifying Revisions'' Sektion von *git help rev-parse* für "
416 "mehr."
418 #. type: Plain text
419 #: ../en/grandmaster.txt:125
420 msgid ""
421 "You may wish to configure a longer grace period for doomed commits. For "
422 "example:"
423 msgstr ""
424 "Vielleicht möchtest Du eine längere Gnadenfrist für todgeweihte 'Commits' "
425 "konfigurieren. Zum Beispiel:"
427 #. type: Plain text
428 #: ../en/grandmaster.txt:127
429 #, no-wrap
430 msgid "  $ git config gc.pruneexpire \"30 days\"\n"
431 msgstr "  $ git config gc.pruneexpire \"30 days\"\n"
433 #. type: Plain text
434 #: ../en/grandmaster.txt:130
435 msgid ""
436 "means a deleted commit will only be permanently lost once 30 days have "
437 "passed and *git gc* is run."
438 msgstr ""
439 "bedeutet, ein gelöschter 'Commit' wird nur dann endgültig verloren sein, "
440 "nachdem 30 Tage vergangen sind und *git gc* ausgeführt wurde."
442 #. type: Plain text
443 #: ../en/grandmaster.txt:132
444 msgid "You may also wish to disable automatic invocations of *git gc*:"
445 msgstr ""
446 "Du magst vielleicht auch das automatische Ausführen von *git gc* abstellen:"
448 #. type: Plain text
449 #: ../en/grandmaster.txt:134
450 #, no-wrap
451 msgid "  $ git config gc.auto 0\n"
452 msgstr "  $ git config gc.auto 0\n"
454 #. type: Plain text
455 #: ../en/grandmaster.txt:136
456 msgid ""
457 "in which case commits will only be deleted when you run *git gc* manually."
458 msgstr ""
459 "wodurch 'Commits' nur noch gelöscht werden, wenn Du *git gc* manuell "
460 "aufrufst."
462 #. type: Plain text
463 #: ../en/grandmaster.txt:138
464 msgid "=== Building On Git ==="
465 msgstr "=== Auf Git bauen ==="
467 #. type: Plain text
468 #: ../en/grandmaster.txt:140
469 msgid ""
470 "In true UNIX fashion, Git's design allows it to be easily used as a low-"
471 "level component of other programs, such as GUI and web interfaces, "
472 "alternative command-line interfaces, patch managements tools, importing and "
473 "conversion tools and so on. In fact, some Git commands are themselves "
474 "scripts standing on the shoulders of giants. With a little tinkering, you "
475 "can customize Git to suit your preferences."
476 msgstr ""
477 "In echter UNIX Sitte erlaubt es Git's Design, dass es auf einfache Weise als "
478 "Low-Level-Komponente von anderen Programmen benutzt werden kann, wie zum "
479 "Beispiel grafischen Benutzeroberflächen und Internetanwendungen, alternative "
480 "Kommandozeilenanwendungen, Patch-Werkzeugen, Import- und "
481 "Konvertierungswerkzeugen und so weiter. Sogar einige Git Anweisungen selbst "
482 "sind nur winzige Skripte, wie Zwerge auf den Schultern von Riesen. Mit ein "
483 "bisschen Handarbeit kannst Du Git anpassen, damit es Deinen Anforderungen "
484 "entspricht."
486 #. type: Plain text
487 #: ../en/grandmaster.txt:143
488 msgid ""
489 "One easy trick is to use built-in Git aliases to shorten your most "
490 "frequently used commands:"
491 msgstr ""
492 "Ein einfacher Trick ist es die in Git integrierte Aliasfunktion zu verwenden "
493 "um die am häufigsten benutzten Anweisungen zu verkürzen:"
495 #. type: Plain text
496 #: ../en/grandmaster.txt:148
497 #, no-wrap
498 msgid ""
499 "  $ git config --global alias.co checkout\n"
500 "  $ git config --global --get-regexp alias  # display current aliases\n"
501 "  alias.co checkout\n"
502 "  $ git co foo                              # same as 'git checkout foo'\n"
503 msgstr ""
504 "  $ git config --global alias.co checkout\n"
505 "  $ git config --global --get-regexp alias  # display current aliases\n"
506 "  alias.co checkout\n"
507 "  $ git co foo                              # same as 'git checkout foo'\n"
509 #. type: Plain text
510 #: ../en/grandmaster.txt:151
511 msgid ""
512 "Another is to print the current branch in the prompt, or window title.  "
513 "Invoking"
514 msgstr ""
515 "Etwas anderes ist der aktuelle 'Branch' im Prompt oder Fenstertitel. Die "
516 "Anweisung"
518 #. type: Plain text
519 #: ../en/grandmaster.txt:153
520 #, no-wrap
521 msgid "  $ git symbolic-ref HEAD\n"
522 msgstr "  $ git symbolic-ref HEAD\n"
524 #. type: Plain text
525 #: ../en/grandmaster.txt:156
526 msgid ""
527 "shows the current branch name. In practice, you most likely want to remove "
528 "the \"refs/heads/\" and ignore errors:"
529 msgstr ""
530 "zeigt den Namen des aktuellen 'Branch'. In der Praxis möchtest Du aber das "
531 "\"refs/heads/\" entfernen und Fehler ignorieren:"
533 #. type: Plain text
534 #: ../en/grandmaster.txt:158
535 #, no-wrap
536 msgid "  $ git symbolic-ref HEAD 2> /dev/null | cut -b 12-\n"
537 msgstr "  $ git symbolic-ref HEAD 2> /dev/null | cut -b 12-\n"
539 #. type: Plain text
540 #: ../en/grandmaster.txt:162
541 msgid ""
542 "The +contrib+ subdirectory is a treasure trove of tools built on Git.  In "
543 "time, some of them may be promoted to official commands. On Debian and "
544 "Ubuntu, this directory lives at +/usr/share/doc/git-core/contrib+."
545 msgstr ""
546 "Das +contrib+ Unterverzeichnis ist eine Fundgrube von Werkzeugen, die auf "
547 "Git aufbauen. Mit der Zeit können einige davon zu offiziellen Anweisungen "
548 "befördert werden. Auf Debian und Ubuntu, findet man dieses Verzeichnis unter "
549 "+/usr/share/doc/git-core/contrib+."
551 #. type: Plain text
552 #: ../en/grandmaster.txt:164
553 msgid ""
554 "One popular resident is +workdir/git-new-workdir+. Via clever symlinking, "
555 "this script creates a new working directory whose history is shared with the "
556 "original repository:"
557 msgstr ""
558 "Ein beliebter Vertreter ist +workdir/git-new-workdir+. Durch cleveres "
559 "verlinken erzeugt dieses Skript ein neues Arbeitsverzeichis, das seine "
560 "Versionsgeschichte mit dem original 'Repository' teilt:"
562 #. type: Plain text
563 #: ../en/grandmaster.txt:166
564 #, no-wrap
565 msgid "  $ git-new-workdir an/existing/repo new/directory\n"
566 msgstr "  $ git-new-workdir ein/existierendes/repo neues/verzeichnis\n"
568 #. type: Plain text
569 #: ../en/grandmaster.txt:168
570 msgid ""
571 "The new directory and the files within can be thought of as a clone, except "
572 "since the history is shared, the two trees automatically stay in sync. "
573 "There's no need to merge, push, or pull."
574 msgstr ""
575 "Das neue Verzeichnis und die Dateien darin kann man sich als 'Clone' "
576 "vorstellen, mit dem Unterschied, dass durch die gemeinschaftliche "
577 "Versionsgeschichte die beiden Versionen automatisch synchron bleiben. Eine "
578 "Synchronisierung mittels 'merge', 'push' oder 'pull' ist nicht notwendig."
580 #. type: Plain text
581 #: ../en/grandmaster.txt:170
582 msgid "=== Daring Stunts ==="
583 msgstr "=== Gewagte Kunststücke ==="
585 #. type: Plain text
586 #: ../en/grandmaster.txt:174
587 msgid ""
588 "These days, Git makes it difficult for the user to accidentally destroy "
589 "data.  But if you know what you are doing, you can override safeguards for "
590 "common commands."
591 msgstr ""
592 "Heutzutage macht es Git dem Anwender schwer versehentlich Daten zu "
593 "zerstören. Aber, wenn man weiß was man tut, kann man die Schutzmaßnahmen der "
594 "häufigsten Anweisungen umgehen."
596 #. type: Plain text
597 #: ../en/grandmaster.txt:176
598 #, no-wrap
599 msgid "*Checkout*: Uncommitted changes cause checkout to fail. To destroy your changes, and checkout a given commit anyway, use the force flag:\n"
600 msgstr "*Checkout*: Nicht versionierte Änderungen lassen 'checkout' scheitern. Um trotzdem die Änderungen zu zerstören und einen vorhandenen 'Commit' abzurufen, benutzen wir die 'force' Option:\n"
602 #. type: Plain text
603 #: ../en/grandmaster.txt:178
604 #, no-wrap
605 msgid "  $ git checkout -f HEAD^\n"
606 msgstr "  $ git checkout -f HEAD^\n"
608 #. type: Plain text
609 #: ../en/grandmaster.txt:180
610 msgid ""
611 "On the other hand, if you specify particular paths for checkout, then there "
612 "are no safety checks. The supplied paths are quietly overwritten. Take care "
613 "if you use checkout in this manner."
614 msgstr ""
615 "Auf der anderen Seite, wenn Du einen speziellen Pfad für 'checkout' angibst, "
616 "gibt es keinen Sicherheitsüberprüfungen mehr. Der angegebene Pfad wird "
617 "stillschweigend überschrieben. Sei vorsichtig, wenn Du 'checkout' auf diese "
618 "Weise benutzt."
620 #. type: Plain text
621 #: ../en/grandmaster.txt:182
622 #, no-wrap
623 msgid "*Reset*: Reset also fails in the presence of uncommitted changes. To force it through, run:\n"
624 msgstr "*Reset*: Reset versagt auch, wenn unversionierte Änderungen vorliegen. Um es zu erzwingen, verwende:\n"
626 #. type: Plain text
627 #: ../en/grandmaster.txt:184
628 #, no-wrap
629 msgid "  $ git reset --hard 1b6d\n"
630 msgstr "  $ git reset --hard 1b6d\n"
632 #. type: Plain text
633 #: ../en/grandmaster.txt:186
634 #, no-wrap
635 msgid "*Branch*: Deleting branches fails if this causes changes to be lost. To force a deletion, type:\n"
636 msgstr "*Branch*: 'Branches' zu löschen scheitert ebenfalls, wenn dadurch Änderungen verloren gehen. Um das Löschen zu erzwingen, gib ein:\n"
638 #. type: Plain text
639 #: ../en/grandmaster.txt:188
640 #, no-wrap
641 msgid "  $ git branch -D dead_branch  # instead of -d\n"
642 msgstr "  $ git branch -D dead_branch  # instead of -d\n"
644 #. type: Plain text
645 #: ../en/grandmaster.txt:190
646 msgid ""
647 "Similarly, attempting to overwrite a branch via a move fails if data loss "
648 "would ensue. To force a branch move, type:"
649 msgstr ""
650 "Ebenso scheitert der Versuch einen 'Branch' durch ein 'move' zu "
651 "überschreiben, wenn das einen Datenverlust zur Folge hat. Um das Verschieben "
652 "zu erzwingen, gib ein:"
654 #. type: Plain text
655 #: ../en/grandmaster.txt:192
656 #, no-wrap
657 msgid "  $ git branch -M source target  # instead of -m\n"
658 msgstr "  $ git branch -M source target  # instead of -m\n"
660 #. type: Plain text
661 #: ../en/grandmaster.txt:197
662 msgid ""
663 "Unlike checkout and reset, these two commands defer data destruction. The "
664 "changes are still stored in the .git subdirectory, and can be retrieved by "
665 "recovering the appropriate hash from `.git/logs` (see \"HEAD-hunting\" "
666 "above).  By default, they will be kept for at least two weeks."
667 msgstr ""
668 "Anders als bei 'checkout' und 'reset' verschieben diese beiden Anweisungen "
669 "das Zerstören der Daten. Die Änderungen bleiben im .git Unterverzeichnis "
670 "gespeichert und können wieder hergestellt werden, wenn der entsprechende "
671 "SHA1-Wert aus `.git/logs` ermittelt wird (siehe \"KOPF-Jagd\" oben). "
672 "Standardmäßig bleiben die Daten mindestens zwei Wochen erhalten."
674 #. type: Plain text
675 #: ../en/grandmaster.txt:201
676 #, no-wrap
677 msgid ""
678 "*Clean*: Some git commands refuse to proceed because they're worried about\n"
679 "clobbering untracked files. If you're certain that all untracked files and\n"
680 "directories are expendable, then delete them mercilessly with:\n"
681 msgstr "*Clean*: Verschiedene git Anweisungen scheitern, weil sie Konflikte mit unversionierten Dateien vermuten. Wenn Du sicher bist, dass alle unversionierten Dateien und Verzeichnisse entbehrlich sind, dann lösche diese gnadenlos mit:\n"
683 #. type: Plain text
684 #: ../en/grandmaster.txt:203
685 #, no-wrap
686 msgid "  $ git clean -f -d\n"
687 msgstr "  $ git clean -f -d\n"
689 #. type: Plain text
690 #: ../en/grandmaster.txt:205
691 msgid "Next time, that pesky command will work!"
692 msgstr "Beim nächsten Mal werden diese lästigen Anweisung gehorchen!"
694 #. type: Plain text
695 #: ../en/grandmaster.txt:207
696 msgid "=== Preventing Bad Commits ==="
697 msgstr "=== Verhindere schlechte 'Commits' ==="
699 #. type: Plain text
700 #: ../en/grandmaster.txt:212
701 msgid ""
702 "Stupid mistakes pollute my repositories. Most frightening are missing files "
703 "due to a forgotten *git add*. Lesser transgressions are trailing whitespace "
704 "and unresolved merge conflicts: though harmless, I wish these never appeared "
705 "on the public record."
706 msgstr ""
707 "Dumme Fehler verschmutzen meine 'Repositories'. Am schrecklichsten sind "
708 "fehlende Dateien wegen eines vergessenen *git add*. Kleinere Verfehlungen "
709 "sind Leerzeichen am Zeilenende und ungelöste 'merge'-Konflikte: obwohl sie "
710 "harmlos sind, wünschte ich, sie würden nie in der Öffentlichkeit erscheinen."
712 #. type: Plain text
713 #: ../en/grandmaster.txt:214
714 msgid ""
715 "If only I had bought idiot insurance by using a _hook_ to alert me about "
716 "these problems:"
717 msgstr ""
718 "Wenn ich doch nur eine Trottelversicherung abgeschlossen hätte, durch "
719 "Verwendung eines _hook_, der mich bei solchen Problemen alarmiert."
721 #. type: Plain text
722 #: ../en/grandmaster.txt:217
723 #, no-wrap
724 msgid ""
725 " $ cd .git/hooks\n"
726 " $ cp pre-commit.sample pre-commit  # Older Git versions: chmod +x pre-commit\n"
727 msgstr ""
728 " $ cd .git/hooks\n"
729 " $ cp pre-commit.sample pre-commit  # Older Git versions: chmod +x pre-commit\n"
731 #. type: Plain text
732 #: ../en/grandmaster.txt:220
733 msgid ""
734 "Now Git aborts a commit if useless whitespace or unresolved merge conflicts "
735 "are detected."
736 msgstr ""
737 "Nun bricht Git einen 'Commit' ab, wenn es überflüssige Leerzeichen am "
738 "Zeilenende oder ungelöste 'merge'-Konflikte entdeckt."
740 #. type: Plain text
741 #: ../en/grandmaster.txt:223
742 msgid ""
743 "For this guide, I eventually added the following to the beginning of the "
744 "*pre-commit* hook to guard against absent-mindedness:"
745 msgstr ""
746 "Für diese Anleitung hätte ich vielleicht am Anfang des *pre-commit* 'hook' "
747 "folgendes hinzugefügt, zum Schutz vor Zerstreutheit:"
749 #. type: Plain text
750 #: ../en/grandmaster.txt:228
751 #, no-wrap
752 msgid ""
753 " if git ls-files -o | grep '\\.txt$'; then\n"
754 "   echo FAIL! Untracked .txt files.\n"
755 "   exit 1\n"
756 " fi\n"
757 msgstr ""
758 " if git ls-files -o | grep '\\.txt$'; then\n"
759 "   echo FAIL! Untracked .txt files.\n"
760 "   exit 1\n"
761 " fi\n"
763 #. type: Plain text
764 #: ../en/grandmaster.txt:232
765 msgid ""
766 "Several git operations support hooks; see *git help hooks*. We activated the "
767 "sample *post-update* hook earlier when discussing Git over HTTP. This runs "
768 "whenever the head moves. The sample post-update script updates files Git "
769 "needs for communication over Git-agnostic transports such as HTTP."
770 msgstr ""
771 "Viele Git Operationen unterstützen 'hooks'; siehe *git help hooks*. Wir "
772 "haben den Beispiel 'hook' *post-update* aktiviert, weiter oben im Abschnitt "
773 "Git über HTTP. Dieser läuft immer, wenn der 'HEAD' sich bewegt. Das Beispiel "
774 "'post-update' Skript aktualisiert Dateien, welche Git für die Kommunikation "
775 "über 'Git-agnostic transports' wie z.B. HTTP benötigt."