GameDevWeek/SourceTree
Für alle Anfänger und diejenigen, die lieber mit einem visuellem Tool arbeiten als mit der Konsole haben wir uns entschieden SourceTree in Verbindung mit P4Merge einzusetzen.
Inhaltsverzeichnis
Vorbereitung
- SourceTree installieren
- P4Merge installieren
- Bei der Installation muss lediglich der Haken bei P4Merge gesetzt werden.. alle anderen Tools sind nicht notwendig.
- Ein GitHub Account muss erstellt werden, falls nicht vorhanden.
Bookmarks Verstecken
Die Bookmarks Ansicht in SourceTree ist selten notwendig. Diese kann über das View Menü versteckt werden.
Username & Email konfigurieren
- In SourceTree die Optionen öffnen (Tools->Options)
- Den Tab "General" wählen
- Full Name erscheint als solches in Github.
- Email muss der Github Email entsprechen.
Merge Tool konfigurieren
- In SourceTree die Optionen öffnen (Tools->Options)
- Den Tab "Diff" wählen
- "P4Merge" muss als Option bei "External Diff Tool" und "Merge Tool" gewählt sein.
P4Merge konfigurieren
- P4Merge Starten
- 2 Text-Dateien zum Öffnen wählen, egal welche.
- Diese werden lediglich benötigt um in die Hauptansicht des Programms zu kommen.
- Im Menü Edit->Preferences wählen.
- In der Sektion "Text Format" die Option "Insert spaces for tabs" wählen.
- Und falls nicht gesetzt, "Tab spacing" auf 4 stellen.
- In der Sektion "File Format" das "Character encoding" auf "Unicode (UTF-8, no BOM)" stellen.
- Einstellungen speichern und Programm beenden.
Klonen des Repositories
- In der Toolbar den Button "Clone / New" benutzen.
- Im Tab "Clone Repository" folgende Konfiguration setzen:
- URL: https://github.com/GameDevWeek/CodeBase.git
- Destination Path: Ein Ort wo der Code gespeichert werden soll.
- Wenn Bookmarks nicht von Interesse sind, kann der Haken abgeschaltet werden.
- Es wird nun alles heruntergeladen. Dies kann etwas dauern.
Normaler Git Workflow
Einen entfernten Branch auschecken
- In der Baumstruktur Links gibt es einen Bereich "Remotes" mit dem Knoten "Origin"
- Hier sind alle Branches gelistet, die im Github Repository zu finden sind.
- Im Kontextmenü der Branches kann gewählt werden "Checkout ..."
- Im folgenden Popup können die Standardeinstellungen beibehalten werden.
- Nun ist der Branch lokal verfügbar und man kann jederzeit zu diesem Wechseln.
- Der Branch wird nach Checkout automatisch ausgewählt.
Führt diese Schritte für den Branch "develop" aus.
Änderungen Stagen
- Wenn Änderungen vorhanden sind, erscheinen diese in der Branch Ansicht als oberster Eintrag "Uncommitted changes".
- Zur Branch Ansicht wechselt man indem man in der Baumstruktur Links den aktiven Branch wählt.
- Wird dieser Eintrag ausgewählt, kann man im unteren Teil sehen, welche Änderungen erkannt wurden.
- Im linken unteren Teil sind zwei Bereiche "Staged files" und "Unstaged files".
- Diese stellen die Staging Area und die sonstigen Änderungen dar.
- Via Drag & Drop oder mit dem Setzen der Haken können Dateien zwischen den Bereichen gewechselt werden.
- Wählt man eine einzelne Datei, kann auf der rechten Seite gesehen werden, welche Änderungen dies beinhaltet.
- Hier können auch einzelne Codeschnipsel zur Staging Area hinzugefügt werden.
Änderungen Stashen
Sollten Änderungen vorhanden sein, die nicht committet werden sollen, so können diese ausgelagert und später wieder zurückgeführt werden. Dies nennt sich bei Git Stashen.
- Warnung: Beim Stashen werden alle Änderungen (Staged und Unstaged) zu einem Stash hinzugefügt. Beim wiederherstellen, erscheinen diese Änderungen alle als Unstaged.
- Dazu klickt man auf den Button "Stash" in der Toolbar und vergibt einen Namen.
- Nun erscheint Links in der Baumstruktur ein neuer Eintrag im Knoten "Stashes".
- Mit dessen Kontextmenü können die Änderungen zurück gespielt werden.
Änderungen Committen
- Wechsel in die Commit Ansicht mit dem Button "Commit" in der Toolbar.
- Links sind wie bekannt Staged und Unstaged Änderungen zu sehen.
- Diese können hier noch einmal angepasst werden.
- Unten erscheint ein Kommentar Feld. Hier sollte kurz beschrieben werden, was der Commit ändert.
- Der Haken "Push changes.." sollte nicht gewählt werden.
- Mit einem Klick auf "Commit" beim Kommentarfeld wird der Commit gespeichert.
- Diese Änderungen sind vorerst noch Lokal!
Externe Änderungen ziehen: Pull (Fetch & Merge)
Bevor die Änderungen auf den Server geschoben werden können, müssen erst Updates vom Server gezogen werden und ggf. mit dem eigenen Code gemerged werden.
- Den Button "Pull" in der Toolbar benutzen
- Hier können die Standardeinstellungen übernommen werden.
- Git versucht alle Änderungen automatisch zu mergen. Sollte dies nicht funktionieren erscheint eine Fehlermeldung.
- Bei einem Konflikt muss manuell gemerged werden.
Konflikte beheben / Dateien Mergen
- Ist ein Konflikt beim Mergen entstanden, so wird dies in der Statusleiste angezeigt.
- Um diesen zu beheben wechselnt man in die Branch Ansicht und dort in den ersten Eintrag "Uncommitted changes".
- Hier erscheinen im Bereich "Unstaged files" alle Dateien die Konflikte haben.
- Für Jede Datei wird wie folgt vorgegangen:
- Das Kontextmenü der Datei öffnen.
- "Resolve Conflicts->Launch External Merge Tool" wählen.
- P4Merge wird nun gestartet. Man sieht 3 Dateien nebeneinander und eine darunter.
- In der Mitte ist die Basis Datei zu sehen
- Links sind die lokalen Änderungen zu sehen
- Rechts sind externe Änderungen zu sehen
- Unten ist die finale Version zu sehen.
- P4Merge versucht soweit es geht eine Vorauswahl zu treffen.
- Diese sollte dennoch auf Korrektheit überprüft werden.
- Im Unterren Bereich sieht man nun welche Änderungen übernommen werden.
- Auf der Rechten Seite gibt es die Möglichkeit, zu wählen ob Zeilen der Basisdatei, der Lokalen Datei oder der externen Datei genommen werden sollen.
- Man kann auch mehrere Wählen indem man Shift gedrückt hält
- Es ist auch möglich die Änderungen manuell durch zu führen.
- Sind alle Änderungen vollzogen, kann P4Merge geschlossen werden (speichern nicht vergessen)
- Danach bleibt eine Datei übrig: dateiname.orig. Diese kann gelöscht werden falls nicht weiter benötigt.
- Sind alle Konflikte behoben, kann in die "Commit" Ansicht gewechselt werden, um die behobenen Konflikte zu committen.
Änderungen zum Server pushen
- Vor dem pushen ist sicher zu stellen, dass man auf dem aktuellsten Stand ist (siehe Pull).
- Pushen kann man auf zwei Varianten:
- Über den "Push" Button der Toolbar. Dieser wählt allerdings alle Branches aus. Dies ist nicht zu empfehlen. Hier sollte nur der Branch ausgewählt sein, der auch gepushed werden soll.
- Über das Kontextmenü des Branches ("Push to origin/..."). Dies wählt nur den jeweiligen Branch aus.
GitFlow
In SourceTree gibt es eine Möglichkeit das erstellen von Feature Branches etwas komfortabler zu gestalten. Dabei wird der GitFlow Workflow genutzt.
Ein kurzes Video, was alles wichtige erklärt ist hier zu finden: How to use a scalable Git branching model called Gitflow
Wie dies In SourceTree zu benutzen ist, ist in diesem Video schnell erklärt: