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.
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"
16 "Content-Type: text/plain; charset=UTF-8\n"
17 "Content-Transfer-Encoding: UTF-8\n"
21 #: ../en/grandmaster.txt:2
22 msgid "== Git Grandmastery =="
23 msgstr "== Git für Fortgeschrittene =="
26 #: ../en/grandmaster.txt:7
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."
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."
40 #: ../en/grandmaster.txt:9
41 msgid "=== Source Releases ==="
42 msgstr "=== Quellcode veröffentlichen ==="
45 #: ../en/grandmaster.txt:12
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:"
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:"
55 #: ../en/grandmaster.txt:14
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"
61 #: ../en/grandmaster.txt:16
62 msgid "=== Commit What Changed ==="
63 msgstr "=== 'Commite' Änderungen ==="
66 #: ../en/grandmaster.txt:19
68 "Telling Git when you've added, deleted and renamed files is troublesome for "
69 "certain projects. Instead, you can type:"
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:"
75 #: ../en/grandmaster.txt:22
85 #: ../en/grandmaster.txt:27
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."
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."
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:"
104 #: ../en/grandmaster.txt:31
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"
110 #: ../en/grandmaster.txt:35
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."
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 "
122 #: ../en/grandmaster.txt:37
123 msgid "=== My Commit Is Too Big! ==="
124 msgstr "=== Mein 'Commit' ist zu groß! ==="
127 #: ../en/grandmaster.txt:41
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?"
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?"
138 #: ../en/grandmaster.txt:43
139 msgid "No worries. Run:"
140 msgstr "Keine Sorge, gib ein:"
143 #: ../en/grandmaster.txt:45
145 msgid " $ git add -p\n"
146 msgstr " $ git add -p\n"
149 #: ../en/grandmaster.txt:49
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 "
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 "
163 #: ../en/grandmaster.txt:51
164 msgid "Once you're satisfied, type"
165 msgstr "Wenn Du zufrieden bist, gib"
168 #: ../en/grandmaster.txt:53
170 msgid " $ git commit\n"
171 msgstr " $ git commit\n"
174 #: ../en/grandmaster.txt:56
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."
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'."
184 #: ../en/grandmaster.txt:63
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."
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."
203 #: ../en/grandmaster.txt:65
204 msgid "=== The Index: Git's Staging Area ==="
205 msgstr "=== Der Index: Git's Bereitstellungsraum ==="
208 #: ../en/grandmaster.txt:71
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 "
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."
224 #: ../en/grandmaster.txt:77
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*."
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*."
240 #: ../en/grandmaster.txt:79
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 "
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ß "
256 #: ../en/grandmaster.txt:81
257 msgid "=== Don't Lose Your HEAD ==="
258 msgstr "=== Verliere nicht Deinen KOPF ==="
261 #: ../en/grandmaster.txt:83
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 "
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:"
272 #: ../en/grandmaster.txt:85
274 msgid " $ git reset HEAD~3\n"
275 msgstr " $ git reset HEAD~3\n"
278 #: ../en/grandmaster.txt:87
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."
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."
290 #: ../en/grandmaster.txt:89
292 "But how can you go back to the future? The past commits know nothing of the "
295 "Aber wie kannst Du zurück in die Zukunft? Die vergangenen 'Commits' wissen "
296 "nichts von der Zukunft."
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:"
304 #: ../en/grandmaster.txt:93
306 msgid " $ git reset 1b6d\n"
307 msgstr " $ git reset 1b6d\n"
310 #: ../en/grandmaster.txt:95
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:"
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:"
321 #: ../en/grandmaster.txt:97
323 msgid " $ git reset ORIG_HEAD\n"
324 msgstr " $ git reset ORIG_HEAD\n"
327 #: ../en/grandmaster.txt:99
328 msgid "=== HEAD-hunting ==="
329 msgstr "=== KOPF-Jagd ==="
332 #: ../en/grandmaster.txt:101
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-"
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."
343 #: ../en/grandmaster.txt:106
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 "
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."
358 #: ../en/grandmaster.txt:108
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."
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 "
374 #: ../en/grandmaster.txt:110
376 "The reflog command provides a friendly interface to these log files. Try"
378 "Die reflog Anweisung bietet eine benutzerfreundliche Schnittstelle zu diesen "
379 "Logdateien. Versuche"
382 #: ../en/grandmaster.txt:112
384 msgid " $ git reflog\n"
385 msgstr " $ git reflog\n"
388 #: ../en/grandmaster.txt:114
389 msgid "Instead of cutting and pasting hashes from the reflog, try:"
391 "Anstatt SHA1-Werte aus dem reflog zu kopieren und einzufügen, versuche:"
394 #: ../en/grandmaster.txt:116
396 msgid " $ git checkout \"@{10 minutes ago}\"\n"
397 msgstr " $ git checkout \"@{10 minutes ago}\"\n"
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:"
405 #: ../en/grandmaster.txt:120
407 msgid " $ git checkout \"@{5}\"\n"
408 msgstr " $ git checkout \"@{5}\"\n"
411 #: ../en/grandmaster.txt:122
413 "See the ``Specifying Revisions'' section of *git help rev-parse* for more."
415 "Siehe in der ``Specifying Revisions'' Sektion von *git help rev-parse* für "
419 #: ../en/grandmaster.txt:125
421 "You may wish to configure a longer grace period for doomed commits. For "
424 "Vielleicht möchtest Du eine längere Gnadenfrist für todgeweihte 'Commits' "
425 "konfigurieren. Zum Beispiel:"
428 #: ../en/grandmaster.txt:127
430 msgid " $ git config gc.pruneexpire \"30 days\"\n"
431 msgstr " $ git config gc.pruneexpire \"30 days\"\n"
434 #: ../en/grandmaster.txt:130
436 "means a deleted commit will only be permanently lost once 30 days have "
437 "passed and *git gc* is run."
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."
443 #: ../en/grandmaster.txt:132
444 msgid "You may also wish to disable automatic invocations of *git gc*:"
446 "Du magst vielleicht auch das automatische Ausführen von *git gc* abstellen:"
449 #: ../en/grandmaster.txt:134
451 msgid " $ git config gc.auto 0\n"
452 msgstr " $ git config gc.auto 0\n"
455 #: ../en/grandmaster.txt:136
457 "in which case commits will only be deleted when you run *git gc* manually."
459 "wodurch 'Commits' nur noch gelöscht werden, wenn Du *git gc* manuell "
463 #: ../en/grandmaster.txt:138
464 msgid "=== Building On Git ==="
465 msgstr "=== Auf Git bauen ==="
468 #: ../en/grandmaster.txt:140
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."
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 "
487 #: ../en/grandmaster.txt:143
489 "One easy trick is to use built-in Git aliases to shorten your most "
490 "frequently used commands:"
492 "Ein einfacher Trick ist es die in Git integrierte Aliasfunktion zu verwenden "
493 "um die am häufigsten benutzten Anweisungen zu verkürzen:"
496 #: ../en/grandmaster.txt:148
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"
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"
510 #: ../en/grandmaster.txt:151
512 "Another is to print the current branch in the prompt, or window title. "
515 "Etwas anderes ist der aktuelle 'Branch' im Prompt oder Fenstertitel. Die "
519 #: ../en/grandmaster.txt:153
521 msgid " $ git symbolic-ref HEAD\n"
522 msgstr " $ git symbolic-ref HEAD\n"
525 #: ../en/grandmaster.txt:156
527 "shows the current branch name. In practice, you most likely want to remove "
528 "the \"refs/heads/\" and ignore errors:"
530 "zeigt den Namen des aktuellen 'Branch'. In der Praxis möchtest Du aber das "
531 "\"refs/heads/\" entfernen und Fehler ignorieren:"
534 #: ../en/grandmaster.txt:158
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"
540 #: ../en/grandmaster.txt:162
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+."
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+."
552 #: ../en/grandmaster.txt:164
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:"
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:"
563 #: ../en/grandmaster.txt:166
565 msgid " $ git-new-workdir an/existing/repo new/directory\n"
566 msgstr " $ git-new-workdir ein/existierendes/repo neues/verzeichnis\n"
569 #: ../en/grandmaster.txt:168
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."
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."
581 #: ../en/grandmaster.txt:170
582 msgid "=== Daring Stunts ==="
583 msgstr "=== Gewagte Kunststücke ==="
586 #: ../en/grandmaster.txt:174
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 "
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."
597 #: ../en/grandmaster.txt:176
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"
603 #: ../en/grandmaster.txt:178
605 msgid " $ git checkout -f HEAD^\n"
606 msgstr " $ git checkout -f HEAD^\n"
609 #: ../en/grandmaster.txt:180
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."
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 "
621 #: ../en/grandmaster.txt:182
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"
627 #: ../en/grandmaster.txt:184
629 msgid " $ git reset --hard 1b6d\n"
630 msgstr " $ git reset --hard 1b6d\n"
633 #: ../en/grandmaster.txt:186
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"
639 #: ../en/grandmaster.txt:188
641 msgid " $ git branch -D dead_branch # instead of -d\n"
642 msgstr " $ git branch -D dead_branch # instead of -d\n"
645 #: ../en/grandmaster.txt:190
647 "Similarly, attempting to overwrite a branch via a move fails if data loss "
648 "would ensue. To force a branch move, type:"
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:"
655 #: ../en/grandmaster.txt:192
657 msgid " $ git branch -M source target # instead of -m\n"
658 msgstr " $ git branch -M source target # instead of -m\n"
661 #: ../en/grandmaster.txt:197
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."
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."
675 #: ../en/grandmaster.txt:201
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"
684 #: ../en/grandmaster.txt:203
686 msgid " $ git clean -f -d\n"
687 msgstr " $ git clean -f -d\n"
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!"
695 #: ../en/grandmaster.txt:207
696 msgid "=== Preventing Bad Commits ==="
697 msgstr "=== Verhindere schlechte 'Commits' ==="
700 #: ../en/grandmaster.txt:212
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."
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."
713 #: ../en/grandmaster.txt:214
715 "If only I had bought idiot insurance by using a _hook_ to alert me about "
718 "Wenn ich doch nur eine Trottelversicherung abgeschlossen hätte, durch "
719 "Verwendung eines _hook_, der mich bei solchen Problemen alarmiert."
722 #: ../en/grandmaster.txt:217
726 " $ cp pre-commit.sample pre-commit # Older Git versions: chmod +x pre-commit\n"
729 " $ cp pre-commit.sample pre-commit # Older Git versions: chmod +x pre-commit\n"
732 #: ../en/grandmaster.txt:220
734 "Now Git aborts a commit if useless whitespace or unresolved merge conflicts "
737 "Nun bricht Git einen 'Commit' ab, wenn es überflüssige Leerzeichen am "
738 "Zeilenende oder ungelöste 'merge'-Konflikte entdeckt."
741 #: ../en/grandmaster.txt:223
743 "For this guide, I eventually added the following to the beginning of the "
744 "*pre-commit* hook to guard against absent-mindedness:"
746 "Für diese Anleitung hätte ich vielleicht am Anfang des *pre-commit* 'hook' "
747 "folgendes hinzugefügt, zum Schutz vor Zerstreutheit:"
750 #: ../en/grandmaster.txt:228
753 " if git ls-files -o | grep '\\.txt$'; then\n"
754 " echo FAIL! Untracked .txt files.\n"
758 " if git ls-files -o | grep '\\.txt$'; then\n"
759 " echo FAIL! Untracked .txt files.\n"
764 #: ../en/grandmaster.txt:232
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."
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."