Wie sollte ich als einziger Entwickler (vorerst) Git verwenden? [geschlossen]

60

Ich habe mehrere Projekte auf Git, in die ich irgendwann andere einbringen möchte. Im Moment bin ich es jedoch und ich benutze Git und GitHub sehr einfach: keine Verzweigungen und im Grunde genommen nur die Commits als Backup für meine lokalen Dateien. Manchmal gehe ich zurück und schaue mir frühere Versionen meiner Dateien als Referenz an, aber ich musste bis zu diesem Punkt keine Rollbacks durchführen, obwohl ich die Option zu schätzen weiß, falls ich sie in Zukunft benötige.

Welche Git- oder GitHub-Funktionen kann ich als einziger Entwickler jetzt nutzen? Wie soll mein Workflow sein?

Gibt es auch bestimmte Vorgehensweisen, mit denen ich beginnen muss, um in Zukunft weitere zu meinen Projekten hinzuzufügen?

VirtuosiMedia
quelle
3
Wie andere erklärt haben, gibt Ihnen Git viel Kraft. Als einziger Entwickler werden Sie jedoch später zu schätzen wissen, dass Sie aufzeichnen, welche Änderungen Sie vorgenommen haben (Änderungen in mehreren Dateien in einem Satz gruppieren), wann Sie sie vorgenommen haben und warum! Es ist auch eine großartige Übung, wenn Sie Teil eines Teams werden.
Leading Geek
1
Geschlossen, weil interessant. :)
@ user93458 wie immer! Geschlossene Themen sind normalerweise genau das, wonach ich suche.
Miroslav Popov
ausgezeichnete Frage, die nie hätte geschlossen werden dürfen.
Band eins

Antworten:

64

Gibt es auch bestimmte Vorgehensweisen, mit denen ich beginnen muss, um in Zukunft weitere zu meinen Projekten hinzuzufügen?

Na sicher. Es gibt eine einfache bewährte Methode, die Sie auch dann anwenden können, wenn Sie gerade kein Team haben: Erstellen Sie einen separaten Zweig für die Entwicklung. Die Idee ist, dass der Hauptzweig nur freigegebene Codeversionen oder größere Änderungen enthält. Dies kann problemlos von neuen Entwicklern übernommen werden, die sich Ihrem Projekt anschließen.

Außerdem ist das Verzweigen nützlich, auch wenn Sie alleine arbeiten. Beispielsweise finden Sie einen Fehler beim Codieren einer neuen Funktion. Wenn Sie keine Verzweigungen verwenden, müssen Sie beides tun: Neue Funktionen hinzufügen und den Fehler in derselben Verzweigung beheben. Das ist nicht gut: P Wenn Sie dagegen einen neuen Zweig zum Erstellen Ihres neuen Features erstellt haben, können Sie einfach den Entwicklungszweig auschecken, den Fehler beheben und den neuen Feature-Zweig wieder auschecken.

Dies ist nur ein kurzes Beispiel dafür, was Sie als alleiniger Programmierer tun können. Ich bin sicher, dass es mehr gute Praktiken geben muss.

Ich kann Ihnen diesen Artikel nur empfehlen: Ein erfolgreiches Git-Verzweigungsmodell

Cristian
quelle
+1 - Das macht Sinn. Ich werde mir diesen Artikel auch genauer ansehen, er sieht sehr nützlich aus.
VirtuosiMedia
Ich bin kein Git-Spezialist, hauptsächlich ein Mercurial-Benutzer. Gilt dieser Rat für Entwicklerzweige noch für Mercurial? Es sieht so aus, aber vielleicht sind einige Unterschiede in diesem Fall keine gute Idee.
Klaim
2
Ja, es gilt so ziemlich für die gesamte Quellcodeverwaltung. Ich mache es eigentlich rückwärts mit SVN; der "haupt" kofferraum ist für die neueste entwicklung, die täglich oder noch öfter reinkommt. Wenn eine Freigabe angefordert wird, wird der Code eingefroren und ein Zweig abgeschnitten. Dieser Zweig erhält nur kleinere Updates, um größere Release-Probleme zu beheben. Anschließend wird die verteilbare Datei daraus erstellt. Auf diese Weise habe ich hinter jeder veröffentlichten Version einen Zweig des Quellcodes. Dies ist besser als einfach b / c zu markieren oder zu kennzeichnen, wenn Commits nach dem Label eingehen, aber vor der Veröffentlichung nicht wissen, ob sie tatsächlich ausgeschlossen wurden.
KeithS
+1 für den Artikel; @Klaim - yup, funktioniert auch gut für hg. sollte wirklich als "erfolgreiches DCVS-Verzweigungsmodell" bezeichnet werden
Wyatt Barnett
+1 danke für den Link, er hat die Art und Weise, wie ich mit Git arbeite, verändert, nicht sehr wohlgemerkt, aber wie gesagt, jedes bisschen hilft!
Newtopian
14

Ich bin genau in dieser Situation, aber ich habe mich für einen etwas komplexeren, aber nicht unbedingt komplizierteren Workflow mit Git entschieden.

Das Ziel war zuerst, den Git-Weg zu lernen, also habe ich einiges erforscht. kehrte dann so ziemlich zum beschriebenen Workflow zurück.

Nach einer Weile wurde es schwierig, damit umzugehen, da einige Situationen auftraten, und es gab mir schlechte Gewohnheiten, die schwer zu brechen waren, wenn ich mich einem Team anschloss.

so entschied ich mich für folgendes:

  • Lokales Repository zum Arbeiten.
  • Hauptzweig als stabiler Stamm für die Anwendung
  • Ein Zweig für jedes Feature / Refactor, im Grunde ein Zweig für jede größere Änderung, die vorgenommen wird.
  • Gehen Sie zurück zum Stamm, wenn der Zweig stabil ist und alle Tests bestanden wurden.

Ich richte auch ein Git-Hub-Konto ein, mit dem ich den Trunk synchronisiere. Dadurch konnte ich problemlos an verschiedenen Computern arbeiten. Es war notwendig, erlaubte mir aber, Fehler zu finden, die mit der Umgebung zu tun hatten, in der ich mich befand und die auf den anderen Computern nicht verfügbar war. Jetzt mache ich es mir zur Gewohnheit, mindestens einmal ein Projekt auf einem anderen "jungfräulichen" System auszuprobieren. Das erspart mir viel Kopfzerbrechen bei der Bereitstellung beim Kunden.

  • Ich tagge jede Version, die es in Github schafft, als freigebbare Version.
  • Wenn für den Kunden freigegeben, werde ich von dieser Version abzweigen, um einen zweiten stabilen Trunk für vom Kunden deklarierte Fehlerbehebungen zu erstellen.

Die vielen Zweige schienen zunächst übertrieben, aber es half WIRKLICH viel. Ich konnte eine Idee in einem Zweig anfangen, eine Weile daran arbeiten, und als ich anfing, Kreise zu drehen, gab ich auf und startete einen anderen Zweig, um an etwas anderem zu arbeiten. Später kam mir eine Idee, wo ich zu dem halbgebackenen Zweig zurückkehren und diese Idee erforschen würde. Dies alles hat mich VIEL produktiver gemacht, da ich sehr schnell mit Blitzen und Ideen umgehen und sehen konnte, ob es funktioniert. Die Kosten für das Wechseln von Zweigen mit GIT sind extrem niedrig, wodurch ich mit meiner Codebasis sehr flink bin. Das heißt, ich muss immer noch das Rebase-Konzept beherrschen, um meine Geschichte zu bereinigen, aber da ich ganz alleine bin, bezweifle ich, dass ich es wirklich brauche. Schob es als "schön zu lernen".

Als alle Verzweigungen kompliziert wurden, untersuchte ich die Protokolloption, um einen Änderungsbaum zu zeichnen und zu sehen, welche Verzweigungen wo sind.

Kurz gesagt, Git ist nicht wie SVN, CVS oder (brrr) TFS. Das Verzweigen ist sehr billig und es ist ziemlich schwierig, Fehler zu machen, die die Arbeit zunichte machen. Nur einmal habe ich etwas Arbeit verloren, weil ich meine Commits zu groß gemacht habe (siehe schlechte Gewohnheiten oben). Wenn Sie sich häufig verpflichten, wird git durch kleine Brocken definitiv Ihr bester Verbündeter sein.

Für mich öffnete git meinen Geist für das, worum es bei der Quellcodeverwaltung wirklich geht. Alles andere zuvor war nur der Versuch, es zu bekommen, git ist der erste, der es in meinem Kopf bekam. Das heißt, ich habe kein anderes DVCS ausprobiert, möglicherweise könnte diese Aussage auf die ganze Familie ausgeweitet werden.

Ein letzter Rat, die Kommandozeile ist dein Freund. Um nicht zu sagen, dass grafische Werkzeuge nicht gut sind, ganz im Gegenteil, aber ich habe mich sehr geärgert, als ich auf die Kommandozeile gesunken bin und es selbst ausprobiert habe. Es ist eigentlich sehr gut gemacht, leicht zu folgen mit einem sehr umfassenden Hilfesystem. Mein größtes Problem war es, an die hässliche Konsole in Windows gebunden zu werden, bis ich Alternativen fand.

Jetzt verwende ich beides, die Eclipse-Integration mit Git, um zu sehen, was in Echtzeit vor sich geht, und um einige Vorgänge wie Unterschiede auszuführen, den Verlauf einer Datei zu untersuchen usw. Und die Befehlszeile zum Verzweigen, Zusammenführen, Verschieben, Abrufen und die komplexeren Protokollbäume . Einige grundlegende Skripte und ich war noch nie so produktiv in Bezug auf die Quellcodeverwaltung und ich hatte noch nie so viel Kontrolle über meine Quellcodeverwaltung.

Viel Glück, hoffte das half.

Newtopian
quelle
4

Ich bin mit mehreren hoch entwickelten Verzweigungsmodellen vertraut und verwende einige bei der Arbeit. Wenn ich jedoch alleine an Projekten arbeite, mache ich ziemlich genau das, was Sie gerade tun. Ich kann nachträglich immer einen Zweig erstellen, wenn ich einen brauche, aber das tue ich so gut wie nie. Wenn ich alleine arbeite, habe ich selten Fehlerbehebungen, die ich nicht abwarten kann, bis meine aktuelle Aufgabe erledigt ist. Mein Rat ist, mit einigen Verzweigungsmodellen vertraut zu sein, aber es macht keinen Sinn, Dinge zu komplizieren, bis Sie es brauchen.

Karl Bielefeldt
quelle
4

Für ein einfacheres Modell können Sie sich ansehen, was GitHub macht. "GitHub Flow" ist sehr einfach und es gibt hier eine ausgezeichnete Anleitung: https://guides.github.com/introduction/flow/index.html

Zusammenfassung (aus Scott Chacons Blog ):

Was ist GitHub Flow?

  • Alles im Master-Zweig kann implementiert werden
  • Um an etwas Neuem zu arbeiten, erstellen Sie eine beschreibend benannte Verzweigung von master (dh new-oauth2-scopes).
  • Melden Sie sich lokal bei diesem Zweig an und senden Sie Ihre Arbeit regelmäßig an den Zweig mit dem gleichen Namen auf dem Server
  • Wenn Sie Feedback oder Hilfe benötigen oder glauben, dass der Zweig zum Zusammenführen bereit ist, öffnen Sie eine Pull-Anfrage
  • Nachdem eine andere Person das Feature überprüft und abgemeldet hat, können Sie es in master zusammenführen
  • Sobald es zusammengeführt und auf "master" verschoben wurde, können und sollten Sie es sofort bereitstellen
AdrianoFerrari
quelle