Die meisten Leute würden die Versionskontrolle nicht als ihr Hobby bezeichnen. Aber in den letzten Jahren sind die Leute sich auch bewusst geworden, wie wertvoll sie ist. Heutzutage findet man keinen Top-Programmierer, Webentwickler oder Webdesigner mehr, der keine Versionskontrolle nutzt. Zum Teil, weil sie hilft, bessere Ergebnisse zu erzielen und die Zusammenarbeit erleichtert. Aber auch, weil sie einem das Leben retten kann, wenn etwas schiefgeht.
Als wir 2010 anfingen, Tower zu entwickeln, hatten wir ein klares Ziel vor Augen: Git, die beste verfügbare Versionskontrolle, einfacher zu bedienen zu machen. Seitdem haben wir dies für über 35.000 Kunden in Unternehmen wie Apple, Google, Amazon und Ebay wahr gemacht.
Als wir mit der Arbeit an Version 2 von Tower begannen, wussten wir, dass dies eine Chance war, noch einen Schritt weiter zu gehen: Git nicht nur einfacher, sondern tatsächlich einfach zu bedienen zu machen.
Wie man Konflikte mit Zuversicht löst
Merge-Konflikte haben mir schon immer Angst gemacht. Besonders, da ich eine „nicht so technische“ Person bin. Ich habe nie wirklich verstanden, was passiert war – und, was noch wichtiger ist, wie ich es beheben konnte.
Eines meiner Hauptprobleme mit Konflikten ist, dass die Situation so abstrakt und schwer zu erfassen ist. Deshalb haben wir in Tower 2 eine visuelle Methode zur Lösung von Konflikten eingeführt.
Dadurch kann ich die Situation nun leichter verstehen – indem ich klar sehe, welche Dateien kollidierten, wie genau sie aussahen, wer daran gearbeitet hat und welcher Commit die Änderungen eingeführt hat. Und ich kann dann entscheiden, wie die Lösung aussehen soll – indem ich einfach auf die Dateien klicke, die ich in der endgültigen Auflösung haben möchte.

Ein Repository in Null Komma Nichts klonen
Ich klone kein Repository gerne. Denn obwohl es eigentlich ein einfacher Prozess ist, ist es auch mühsam: Zuerst muss ich mich bei meinem Service-Konto auf GitHub, Bitbucket oder Beanstalk anmelden. Dort beginnen die Probleme: Als ob das Herumfummeln mit Benutzernamen und Passwörtern nicht genug wäre, erfordern neue Authentifizierungsverfahren nun die Erstellung von Passcodes auf dem Handy, die Generierung von persönlichen Zugriffstokens oder das Durchlaufen verschiedener anderer Hürden. Danach muss ich mein Repository finden und die richtige URL kopieren – wobei ich zwischen verschiedenen Optionen wie ssh, https oder git-URLs wählen muss.
Ein neuer Service-Account-Manager in Tower 2 ermöglicht es mir, meine Konten bei GitHub, Bitbucket und Beanstalk einmal zu konfigurieren – und mich dann nie wieder um Authentifizierung und Repository-URLs kümmern zu müssen.

Ich erhalte nun eine übersichtliche Liste aller meiner Repositories in diesen Konten. Ich kann ein Repository mit nur einem Klick auf meinen lokalen Rechner klonen. Oder ein neues Konto direkt aus Tower heraus erstellen.
Vor allem aber: Ich muss mich nicht mehr mit Benutzernamen, Passwörtern, Tokens oder URLs herumschlagen.
Verstehen, was in Ihrem Projekt passiert ist
Jedes Projekt entwickelt sich in kleinen Schritten. Wenn ich mit dem Projekt Schritt halten möchte, sind es diese kleinen Schritte, die ich verstehen muss. Daher ist es für mich von entscheidender Bedeutung, dass ich alle benötigten Informationen auf verdauliche Weise erhalte. In der neuen Version von Tower haben wir viel Aufwand in alle Dinge rund um die Historie gesteckt
Sie können die Commits sehen, die Sie beim Pull von einem Remote-Server erhalten würden – so können Sie klar verstehen, was passieren wird, wenn Sie es schließlich doch tun.

Sie können zwischen mehreren verschiedenen Ansichten wählen – so haben Sie die Visualisierung, die für Sie am besten geeignet ist.

Sie können direkt auf den Datei-Tree eines Commits zugreifen – so können Sie alle Dateien Ihres Projekts zu jedem beliebigen Zeitpunkt inspizieren.

Und schließlich unterstützt die Suchfunktion jetzt Dateipfade – so können Sie leicht nur die Commits sehen, die eine bestimmte Datei geändert haben.

Fehler rückgängig machen
Meine Einstellung zu Fehlern hat sich geändert – obwohl ich genauso viele mache wie früher. Geändert hat sich, dass ich sie nicht mehr so sehr fürchte. Früher war ich zögerlich, größere Änderungen an einem Projekt vorzunehmen oder etwas Neues auszuprobieren. Weil ich wusste, dass es schwer war, sich von einem Fehler zu erholen, wenn einer passieren sollte.
Nachdem ich eine Weile Git benutzt hatte, begann ich zu verstehen, dass ich alles rückgängig machen konnte. Gits Undo-Funktionen ermöglichen es Ihnen, sich von allem zu erholen – aber die entsprechenden Befehle sind über das gesamte System verteilt.
In Tower haben wir diese Dinge sehr einfach zugänglich gemacht: Ich kann meinen letzten Commit korrigieren, jede historische Version wiederherstellen, die Auswirkungen eines bestimmten Commits rückgängig machen oder lokale Änderungen in meiner Arbeitskopie verwerfen. Es ist großartig zu wissen, dass ich nichts falsch machen kann.
Aussagekräftige Commits erstellen
Als ich anfing, Versionskontrolle mit Subversion zu nutzen, missbrauchte ich sie im Wesentlichen als Backup-System: Ich quetschte alle meine Änderungen in einen Commit, nur um sicherzustellen, dass sie sicher im Repository gespeichert waren. Dementsprechend lasen sich meine Commit-Nachrichten so:
Bug #312 behoben, Login-Funktion implementiert, Navigation umstrukturiert. Oh, und nebenbei wurde auch alles andere geändert…
Als ein Teammitglied (oder sogar ich selbst) diesen aufgeblähten Commit betrachtete, wusste keiner von uns, was tatsächlich passiert war.
Ich hatte damals die Versionskontrolle nicht verstanden. Und ehrlich gesagt, hatte ich nicht die richtigen Werkzeuge zur Hand. Mit Git verstand ich, dass die Durchsicht der Commit-Historie eines Projekts es ermöglichen sollte, zu sehen, wie sich das Projekt entwickelt hat. Aber das funktioniert nur unter einer Bedingung: Nur zusammenhängende Änderungen sollten zusammen committet werden.
Zum Beispiel sollten die Behebung zweier verschiedener Bugs zu zwei separaten Commits führen. Kleine Commits erleichtern es anderen Entwicklern, die Änderungen zu verstehen und sie rückgängig zu machen, wenn etwas schiefgelaufen ist.
Git hilft bei der Erstellung solcher granularen Commits mit Werkzeugen wie dem „Staging Area“: Es zwingt mich, einen Commit wirklich zu gestalten und zu bestimmen, welche Änderungen ich genau aufnehmen möchte. Ich kann sogar auf der Ebene einer einzelnen geänderten Zeile entscheiden, ob diese Änderung Teil des nächsten Commits sein soll oder nicht.
Besonders letzteres ist jedoch auf der Kommandozeile eher umständlich zu bedienen. Dort passt Tower gut, da es solche leistungsstarken Funktionen mit einer sauberen Benutzeroberfläche leicht zugänglich macht.

Workflows optimieren
Die Verwendung von Git kann komplex sein. Aber der Zugewinn an Qualität, Vertrauen und Zuverlässigkeit, den Sie durch die Nutzung erzielen, ist die Mühe auf jeden Fall wert. Diesen Aufwand zu reduzieren, ist genau das, was wir mit Tower 2 erreichen wollten. Wir möchten die Nutzung von Git schneller und einfacher machen. Nehmen wir einige Beispiele, wo sich dies in Tower zeigt
- Sie müssen neue Änderungen für ein Projekt nicht mehr manuell herunterladen. Stattdessen führt Tower nun automatisch und regelmäßig eine „Fetch“-Operation im Hintergrund durch. So wissen Sie sofort, ob etwas Neues auf dem Remote-Server verfügbar ist.

- Die App speichert automatisch Ihre aktuellen Änderungen im Stash (einer Art Zwischenablage), wenn Sie zwischen Branches wechseln, pullen oder rebasen. Aktionen wie diese werden am besten mit einer sauberen Arbeitskopie durchgeführt – und Tower erspart Ihnen die Mühe, sich daran zu erinnern und es selbst zu tun.
- Ein neues „Schnell öffnen“-Dialogfeld ermöglicht es Ihnen, jedes Projekt in Sekundenschnelle zu finden und zu öffnen. Nachdem Sie nur wenige Zeichen des Projektnamens eingegeben haben, bietet Ihnen Tower alle passenden Repositories an.

- Wir haben das Committen viel schneller gemacht. Die Benutzeroberfläche für die Commit-Nachricht ist nun sauber in die Hauptoberfläche integriert; das Korrigieren eines Commits kann durch einfaches Halten der ALT-Taste erfolgen.
- Auf vielfachen Wunsch haben wir den „git-flow“-Workflow in Tower integriert. git-flow-Fans können ihn nun direkt aus Tower heraus nutzen.
- Sie können Drag & Drop verwenden, um in Tower recht komplexe Git-Aufgaben sehr einfach zu erledigen: vom Erstellen und Mergen von Branches über das Cherry-Picking von Commits bis hin zum Anwenden sogar von Teilen eines Stash.

Wir haben eine ganze Reihe neuer Funktionen in Tower 2 implementiert. Aber vor allem haben wir uns auf die Benutzerfreundlichkeit konzentriert: Ein gutes Werkzeug, so glauben wir, sollte Ihnen helfen, leichter ein besserer Profi zu werden.
Ich benutze SourceTree; es ist kostenlos und gut. Soweit ich das beurteilen konnte, als ich es zum ersten Mal benutzte, hatte Tower keine Baumansichten, aber jetzt hat es welche, was gut ist.
Bitte, Herr Günther, verhöhnen Sie mich nicht :-) Ich arbeite unter Windows (nicht meine Wahl; wir sind ein Windows-Shop) und ich suche schon lange nach einem wirklich guten Git-Client. Ich sehne mich seit langem nach einer Windows-Version von Tower… SourceTree ist sicherlich besser als Kommandozeilen-Tools oder die GUI-Tools, die mit msysgit geliefert werden, aber es gibt ein paar Punkte, die gerade genug Reibung erzeugen, um die Codeverwaltung etwas lästig zu machen.
Also, wann immer Sie Jungs Lust haben, Tower nach Windows zu portieren, werde ich mit meinem Geld Schlange stehen.
Ich schließe mich dem an… Windows-Version bitte…
Danke, Paul und Michael! Eine Windows-Version ist in der Tat nicht ganz ausgeschlossen. Ich schlage vor, dass Sie sich für unseren kostenlosen (und sehr seltenen) Newsletter anmelden, um sicherzustellen, dass Sie diese gute Nachricht hören, wenn sie Realität wird…
http://www.git-tower.com/newsletter
Keine vollständige Lösung, aber wenn Sie Brackets Editor ausprobieren, könnten Sie Brackets Git versuchen, es ist eine großartige Git-Erweiterung, mit der Sie fast alles über Git verwalten können.
@Fez: Das ist eine schöne UI. Warum können nicht alle Git-UIs so einfach sein… Obwohl ich Brackets nicht benutze, bin ich versucht, es einfach als Git-Workflow-Ding auszuprobieren.
Nun, Linus sollte Git fertigstellen. Ich meine, Befehle hinzufügen und alte refaktorisieren, damit normale Leute (Nicht-Hacker) sein volles Potenzial nutzen können. Es ist so verwirrend, wenn man zu fortgeschrittenen Funktionen gelangt. Es ist wie Linux, es wurde nie fertiggestellt -)
Sehr schöne animierte GIFs! Können Sie Tipps geben, wie Sie diese erstellt haben?
Danke, schön zu hören, dass sie Ihnen gefallen. Wir haben sie mit „LICEcap“ erstellt: http://www.cockos.com/licecap/
Danke, Tobias! LICEcap sieht großartig aus – ich kann es kaum erwarten, es auszuprobieren!
Es tut mir leid für das
Es sieht gut aus, aber ich denke, es ist zu wenig zu spät. Es gibt jetzt Sourcetree, das sowohl für Mac als auch für Windows ist und kostenlos ist – dieser Artikel hat mir keinen Grund gegeben, zu wechseln.
Sourcetree unter Windows ist nicht so gut organisiert wie die Mac-Version. Es ist auch hässlich wie die Sünde. Wenn es eine Windows-Version von Tower gäbe, die sich so weit wie möglich an die Mac-Version hält, anstatt aus keinem guten Grund anders zu sein, nur weil sie auf Windows läuft, dann würde ich Tower definitiv für Windows kaufen, aber wahrscheinlich bei Sourcetree auf dem Mac bleiben.
Ich freue mich, dass Ihnen SourceTree gefällt; es hat für mich genug Reibungspunkte, dass es etwas unangenehm zu bedienen ist. Ich denke, es ist das am sinnvollsten gestaltete aller Windows Git-Clients, aber es gibt bestimmte Dinge, die es nur ein wenig frustrierend machen – wie die Tatsache, dass es die Sortierreihenfolge der Dateien in der Arbeitskopie jedes Mal vergisst, wenn ich auch nur eine einzige Zeile committe.
Hallo,
Das ist großartig. Wenn ich zu den Mitgliedern der kostenlosen Update-Periode gehört hätte, würde ich es bereits nutzen. Ich denke, all die Neuigkeiten sind gut, aber ich denke, Sie haben es mehr wie „SmartGitHG“ aussehen lassen, was ein cooles Git für Windows ist; für alle, die danach suchen.
Mit freundlichen Grüßen,
Ian
Website (mit E-Mail-SIGNATUR-Generator): https://www.liebdich.com.
Github: https://github.com/DocAsarel.