Am Anfang war die Kommandozeile

Wie man Git bedienen sollte – oder auch nicht

Sophie Hollmann, Frederic Ebelshäuser

Was passiert eigentlich, wenn man als Nicht-Entwickler in einem Team mit lauter Entwicklern landet? Man lernt viele spannende Dinge und neue Technologien kennen. Falls man sein ganzes bisheriges Leben in seliger Ignoranz an jedwedem Versionskontrollsystem vorbeigelaufen ist, kommt man spätestens jetzt nicht mehr an Git vorbei. Aber wie klappt das mit der Versionskontrolle, wenn plötzlich jemand dazukommt, der viele nützliche Fähigkeiten hat, vom Programmieren aber ungefähr so viel versteht wie ein Maulwurf vom Bogenschießen?

Developer Café

In der Kolumne Developer Café stellen Sophia Hollmann und Frederic Ebelshäuser von Yatta Solutions innovative Projekte, neue Tools und faszinierende Tricks für das Eclipse Framework vor. Sie haben das Ohr nah am Puls der Szene und berichten von Vortragsreihen und Conventions.

 

Bisher erschienen:

Der Cursor blinkt geduldig, mein kleiner Finger schwebt über der Enter-Taste. Soll ich es tun? Mir bricht der Schweiß aus – und dabei fing alles so harmlos an. Heute Nachmittag beim Kaffee mit David, meinem Kollegen. Er ist Entwickler, Java-Profi und Versionskontroll-Gott. Jedenfalls wenn man ihm selbst glaubt. Ich auf der anderen Seite gehöre zwar auch einer Zunft an, die mich zur QWERTZ-Tastatur-Virtuosin macht, allerdings habe ich nichts mit geschweiften Klammern am Hut. Und das Semikolon kommt bei mir ebenfalls äußerst selten zum Einsatz.

Von außen sieht man den Unterschied kaum. David ist alles andere als Bilderbuch-Nerd mit Pickeln und Kellerteint, sondern ein ganz normaler Typ, der höchstens signifikant häufiger Kapuzenpullis trägt als andere Mittdreißiger. Ich klappe ebenfalls wie selbstverständlich meinen Laptop auf, obwohl wir in der wohlverdienten Pause lieber mal unsere Augen entspannen sollten. Und kaffeesüchtig sind wir auch beide.

Wir hocken also, wie immer mit unsern Laptops auf den Knien, in den gemütlich abgewetzten Sesseln beim Kaffee-Dealer um die Ecke. Ich entdecke gerade erst die Freuden der Versionskontrolle. Nie wieder versehentlich wichtige Absätze aus der ersten Version eines Artikels verlieren, nie wieder Dokumente mit Namen wie „Entwurf 01“ und „Entwurf 01.1“ per Email hin und her schicken! Grandios. Ich liebe Git – und irgendwann werde ich es sicher auch verstehen.

Ich will nur eben die letzten Änderungen an einem Artikel committen (Vokabeln lerne ich schnell), mir dann einen schönen schwarzen Kaffee reinpfeifen, ein Stündchen die Füße hochlegen und mir die Sonne ins Gesicht scheinen lassen. Da schielt David auf meinen Bildschirm – und das Unheil nimmt seinen Lauf.

„Hey, warum nimmst du denn eigentlich einen GUI-Client? Mit der Konsole geht’s doch viel schneller.“

„Bei dir vielleicht.“ Ich bin mit grafischen Benutzeroberflächen aufgewachsen – warum ich meine schöne, bunte Welt für ein kleines, schwarzes Fenster mit hässlich formatiertem Text aufgeben soll, ist mir schleierhaft. „Ich komme schon klar.“

„Überhaupt schon mal die Kommandozeile benutzt?“ Gerechte Empörung schwingt in Davids Stimme mit. Die Kellnerin hat sich inzwischen von hinten angepirscht und stellt zwei Tassen dampfenden Kaffee auf den Tisch.

Um das klarzustellen, David ist bei meinen Lieblingskollegen mit großem Abstand auf Platz eins, und ohne ihn wäre ich aufgeschmissen – denn irgendjemand muss mir ja den ganzen Programmierer-Slang übersetzen. Aber manchmal kann er es auch übertreiben mit der Wissenvermittlung. „Och, ich tippe mir doch schon genug die Finger wund“, sage ich betont gelassen. „Die Kommandozeile ist doch für mich völlig unnötig.“

„Unnötig? Auf keinen Fall! Ich kann dir zig Fälle nennen, in denen du mit deinen bunten Knöpfen total aufgeschmissen bist – warte, du hast doch da grade ein paar Änderungen, oder? Benutz die Konsole! Immerhin arbeitest du jetzt mit Programmierern zusammen!“

Ich sollte keine Hemmungen haben, die Kommandozeile mal auszuprobieren.

Mit Programmierern zusammenarbeiten, ja, genau das tue ich. Ich schreibe für Programmierer, und zwar Texte über Themen, die für etwa 97 Prozent meiner Freunde genauso interessant sind wie Briefmarkensammlungen. Dass mich interessiert, was ich schreibe, ist vielen Leuten ebenfalls schwer vermittelbar. Kurzum, ich sollte wissen, wie sie ticken, die Programmierer. Ich sollte keine Hemmungen haben, die Kommandozeile mal auszuprobieren. Also dann, denke ich mir, was kann schon schiefgehen? Alles was schiefgehen kann, wird auch schiefgehen, flüstert eine leise Stimme in meinem Hinterkopf – aber ich ignoriere sie. „Na, meinetwegen. Zeig mir die Kommandozeile.“

David grinst freudig. „Du wirst schon sehen. Viel besser als die bunten Knöpfe.“

Ich rufe also die Konsole auf. Ja, immerhin gesehen habe ich die schon mal. Ich bin ja nicht völlig auf den Kopf gefallen. David diktiert mir Kommandos. Gar nicht so schwer, denke ich noch.

git status

git add –A

git commit steht schon weiß auf schwarz auf meinem Display, da fällt mir im letzten Augenblick etwas ein.

„Moment, die Datei mit meiner Vita, die habe ich zwar geändert, aber das war echt ein Experiment. Ich will die alte Version behalten.“

„Du hast doch gesagt, du willst alle Änderungen stagen.“

„Nein, will ich nicht. Wie nehme ich die Datei wieder raus?“

Zu meinem Ärger zuckt David mit den Schultern. „Na dann schlage ich vor, du fragst die Doku.“

„Du könntest es mir auch einfach sagen. Du bist doch der Experte für esoterische Kommandos.“

Die Schmeichelei prallt an David ab. „Sagst du nicht immer, man lernt Dinge am besten, wenn man sie selbst ausprobiert?“

‘Undo’, antwortet mir Git prompt, sei kein Git Kommando.

Wer hat eigentlich behauptet, ich wollte lernen, welche Kommandos man wann in das langweilige, schwarze Fenster eintippt? Ich murmele einen Fluch, öffne den Browser und füttere die Suchmaschine ungeduldig mit Anfragen. Bald stecke ich tief im Dschungel der Git-Dokumentationen und frage mich, ob ich ihn jemals lebend verlassen werde. David schlürft inzwischen genüsslich an seiner Tasse, und ich spüre förmlich, wie meine Pause sich in heißen Kaffeedampf auflöst. Heimlich tippe ich git undo.

‚Undo‘, antwortet mir Git prompt, sei kein Git Kommando. Natürlich nicht. wie konnte ich auch erwarten, dass sich etwas einfach rückgängig machen lässt. Abstrus.

„Wer bitte soll da denn durchblicken? Tausend Kommandos, aber nirgends steht, warum oder wann ich sie anwenden sollte.“

David senkt die Kaffeetasse. „Schau mal, man kann alles auf viele verschiedene Arten angehen – und damit kann man auch alles dem eigenen Workflow anpassen. Die Kommandos sind vielleicht etwas schwierig zu merken, aber wenn du dir die Zeit nimmst, verstehst du später einfach besser, was unter der Haube vor sich geht – wie Git wirklich funktioniert.“

Ich kann mich inzwischen kaum noch erinnern, was genau eigentlich das Problem war. Aber immerhin git status habe ich mir eingeprägt. „Ach Mist, vertippt.“ Ich werde ungeduldig. Ich wäre längst fertig und hätte eine entspannte Pause, wenn David und mein Ehrgeiz nicht wären. Böse spähe ich über die Oberkante meines Displays. „Wozu meine Buttons gut sind, kann ich mir übrigens wunderbar merken.“

„Ja, bestimmt. Aber sag mir doch mal, wie geht ein Rebase mit deinem GUI-Client? Was machst du, wenn du mit einem Commit mal etwas kaputtmachst? Wie willst du so einen Fehler fixen, ohne die Kommandos zu kennen? Gar nicht. Dann stehst du einfach blöd da.“

Ich unterdrücke das Bedürfnis, die Suchmaschine zu fragen, was noch gleich ein Rebase war. „Hast du auch was Hilfreiches beizutragen? Schließlich war das hier dein Vorschlag … Nein, warte, lass mich einfach noch mal meine Änderungen ansehen, vielleicht ist die Vita doch nicht so schlecht … ich habe doch eben gelesen, wie das geht. git diff? Oder brauche ich jetzt git diff -cached? Ehrlich mal, das alles wurde erfunden, damit ich mich wie ein Vollhorst fühle.“

David schüttelt den Kopf. „Was ist denn zum Beispiel, wenn du mal Skripte brauchst? Und dein ach-so-toller GUI-Client lokale Hooks einfach mal nicht verwendet? Mit der Kommandozeile kannst du Git wunderbar fernsteuern – also zum Beispiel ein Build-Skript oder ein Deploy-Skript verwenden. Mach mir mal vor, wie das mit deinen bunten Knöpfen geht.“

„Wieso zum Teufel glaubst du, ich könnte jemals ein Deploy-Skript brauchen?“

„Selbst wenn nicht, es gibt doch auch jede Menge verschiedene GUI-Clients da draußen. Und je nachdem, bei welchem Git-Service dein Repository so liegt, brauchst du vielleicht eine ganz bestimmte GUI-Anwendung. Die Kommandozeile dagegen funktioniert immer gleich.“

GUIs und Mäuse wurden ja wohl aus einem Grund erfunden: Nämlich, weil eine grafische Oberfläche alles einfacher und zugänglicher macht.

„Vielleicht.“ Versuch’s mit Argumenten, sage ich mir, wenigstens noch ein Mal. „Menschen sind nun mal visuell gepolt. Ja, wir können abstrakte Ideen interpretieren und Worte in mentale Bilder verwandeln – aber GUIs und Mäuse wurden ja wohl aus einem Grund erfunden: Nämlich, weil eine grafische Oberfläche alles einfacher und zugänglicher macht.“

„Und was, wenn deine GUI-Anwendung Fehler macht? Wenn das Ding im Hintergrund etwas tut, was du nicht willst? Dann stehst du schön blöd da. Ich vertraue den Dingern eben nicht, und du solltest das auch nicht.“

„Genau, du vertraust lieber einem unfehlbaren Menschen. So kenne ich dich.“ Ich versuche noch einmal, mir meine Änderungen anzeigen zu lassen. „Da, siehst du, ich habe mich schon wieder vertippt! Null Fehlertoleranz! Widerspricht allen Regeln der Usability.“

„Reg dich doch nicht so auf …“

„Nicht aufregen? Schau mal in deine Kaffeetasse, David!“ Ich knalle meinen Laptop zu. „Und? Genau! Deine Tasse ist leer. Meine ist noch voll. Und mein Kaffee ist kalt. Ich glaube, ich kümmere mich in Zukunft wieder alleine um meine Versionskontrolle. Dankeschön.“

Das Ende vom Lied? David bleibt auf meinen kalten Kaffee sitzen, und ich hocke zur Strafe weit nach Feierabend mit dem Laptop auf meiner Couch und kämpfe mit der Kommandozeile. Da ich stundenlang Dokumentationen, Foren und Stackoverflow durchkämmt habe, fühle ich mich zwischenzeitlich sehr viel schlauer – bis mich Git immer wieder eines Besseren belehrt. Selbstbewusst tippe ich meine Kommandos, bis ich bemerke, dass eines dieser Kommandos leider das falsche war. Eine weitere Stunde später – Panik, Wutausbruch und Heulkrampf habe ich hinter mir gelassen – schwebt mein Finger über der Enter-Taste.

Soll ich es tun? Habe ich überhaupt eine Wahl? Nun, flüstert die leise Stimme in meinem Kopf, du könntest David fragen und ihm morgen einen Kaffee für die Hilfe ausgeben. Nein, beschließe ich – mindestens genauso vernünftig wie beim letzten Mal, als die Stimme zu mir sprach. Kommt ja gar nicht in Frage! Und so lösche ich am Ende die ganze Arbeit des Tages, klone das Original und lege eine Nachtschicht ein, um meinen Artikel fertigzubekommen.

Hat die Sache auch etwas Positives? Ja. Trotz Gits Bemühungen, mir das Gegenteil zu beweisen, ich bin jetzt tatsächlich schlauer. Ich weiß, dass es ok ist, mit einem GUI-Client zu arbeiten. Für Nicht-Entwickler sogar vollkommen ok. David hat seine Build- und Deploy-Skripte, und das ist auch gut so. Aber ganz ehrlich, die Vorzüge der Kommandozeile, überlasse ich allzu gerne den Code-Experten.

Geschrieben von
Sophie Hollmann
Sophie Hollmann
Sophie Hollmann ist Technische Redakteurin und bei Yatta mit der umfassenden Dokumentation von Yatta Profiles for Eclipse betraut. Die Spezialistin in Sachen strukturierter Text ist für die knackige Aufbereitung wichtiger Informationen zuständig. Die vielen verschiedenen Informationen und technischen Daten in ihrem Kopf hält sie in der Freizeit mit Cellospielen und Radtouren unter Kontrolle.
Frederic Ebelshäuser
Frederic Ebelshäuser
Frederic Ebelshäuser ist Projektleiter und Software-Engineer bei Yatta. Er entwickelte E-Commerce-Lösungen als Consultant in verschiedenen Bereichen. Heute kümmert sich Frederic als Projektleiter um Eclipse-Integrationen von Yatta, darunter auch die Entwicklung der Profiles for Eclipse. Außerdem engagiert er sich als Speaker mit Vorträgen in der Eclipse-Community. Frederic begeistert sich für kulturelle Erlebnisreisen und frühstückt am liebsten in Barcelona.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: