GameDevWeek/SourceTree: Unterschied zwischen den Versionen

Aus /dev/null
Wechseln zu: Navigation, Suche
[gesichtete Version][gesichtete Version]
Zeile 2: Zeile 2:
  
 
== Vorbereitung ==
 
== Vorbereitung ==
# Installiere [http://www.sourcetreeapp.com/ SourceTree]
+
[[Datei:P4merge install.png|300px|miniatur|rechts|Lediglich P4Merge muss installiert werden.]]
# Installiere [http://www.perforce.com/downloads/20-User?qt-perforce_downloads_step_3=1#product-10 P4Merge]
+
# [http://www.sourcetreeapp.com/ SourceTree] installieren
 +
# [http://www.perforce.com/downloads/20-User?qt-perforce_downloads_step_3=1#product-10 P4Merge] installieren
 
#* Bei der Installation muss lediglich der Haken bei P4Merge gesetzt werden.. alle anderen Tools sind nicht notwendig.
 
#* Bei der Installation muss lediglich der Haken bei P4Merge gesetzt werden.. alle anderen Tools sind nicht notwendig.
# Erstelle einen [https://github.com/ GitHub Account]
+
# Ein [https://github.com/ GitHub Account] muss erstellt werden, falls nicht vorhanden.
 
+
<br style="clear: both"/>
 
=== Bookmarks Verstecken ===
 
=== Bookmarks Verstecken ===
Die Bookmarks Ansicht in SourceTree ist selten notwendig. Ihr könnt diese über das View Menü verstecken.
+
Die Bookmarks Ansicht in SourceTree ist selten notwendig. Diese kann über das View Menü versteckt werden.
  
 
=== Username & Email konfigurieren ===
 
=== Username & Email konfigurieren ===
# Starte SourceTree.
+
# In SourceTree die Optionen öffnen (Tools->Options)
# Öffne Tools->Options
+
# Den Tab "General" wählen
# Wechsle in den Tab "General"
 
 
# Full Name erscheint als solches in Github.
 
# Full Name erscheint als solches in Github.
 
# Email muss der Github Email entsprechen.
 
# Email muss der Github Email entsprechen.
  
 
=== Merge Tool konfigurieren ===
 
=== Merge Tool konfigurieren ===
# Starte SourceTree.
+
# In SourceTree die Optionen öffnen (Tools->Options)
# Öffne Tools->Options
+
# Den Tab "Diff" wählen
# Wechsle in den Tab "Diff"
+
# "P4Merge" muss als Option bei "External Diff Tool" und "Merge Tool" gewählt sein.
# Bei "External Diff Tool" und bei "Merge Tool" wähle "P4Merge"
 
  
== Clone des Repositories ==
+
== Klonen des Repositories ==
# Klick auf den Button "Clone / New"
+
[[Datei:sourcetree_clone.png|300px|miniatur|rechts|Klonen eines Repositories.]]
# Im Tab "Clone Repository" wähle:
+
# In der Toolbar den Button "Clone / New" benutzen.
 +
# Im Tab "Clone Repository" folgende Konfiguration setzen:
 
#* URL: https://github.com/Lusito/GameDevWeek.git
 
#* URL: https://github.com/Lusito/GameDevWeek.git
#* Destination Path: Ein Ort wo ihr den Code speichern wollt.
+
#* Destination Path: Ein Ort wo der Code gespeichert werden soll.
#* Bookmark könnt ihr wählen, müsst ihr aber nicht.
+
#* Wenn Bookmarks nicht von Interesse sind, kann der Haken abgeschaltet werden.
 
# Es wird nun alles heruntergeladen. Dies kann etwas dauern.
 
# Es wird nun alles heruntergeladen. Dies kann etwas dauern.
 +
<br style="clear: both"/>
  
 
== Normaler Git Workflow ==
 
== Normaler Git Workflow ==
 
=== Einen entfernten Branch auschecken ===
 
=== Einen entfernten Branch auschecken ===
* In der Baumstruktur Links gibt es einen Bereich "Remotes" mit dem Kind "Origin"
+
[[Datei:sourcetree_checkout.png|300px|miniatur|rechts|Klonen eines Repositories.]]
 +
* 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.
 
* Hier sind alle Branches gelistet, die im Github Repository zu finden sind.
 
* Im Kontextmenü der Branches kann gewählt werden "Checkout ..."
 
* Im Kontextmenü der Branches kann gewählt werden "Checkout ..."
Zeile 39: Zeile 41:
 
* Nun habt ihr den Branch lokal verfügbar und könnt jederzeit zu diesem Wechseln.
 
* Nun habt ihr den Branch lokal verfügbar und könnt jederzeit zu diesem Wechseln.
 
* Der Branch wird nach Checkout automatisch ausgewählt.
 
* Der Branch wird nach Checkout automatisch ausgewählt.
 +
 +
Führt diese Schritte für den Branch "develop" aus.
 +
<br style="clear: both"/>
  
 
=== Änderungen Stagen ===
 
=== Änderungen Stagen ===
 +
[[Datei:sourcetree_branch_view.png|300px|miniatur|rechts|Branch Ansicht, Staged und Unstaged Files.]]
 
* Wenn Änderungen vorhanden sind, erscheinen diese in der Branch Ansicht als oberster Eintrag "Uncommitted changes".
 
* 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.
 
** Zur Branch Ansicht wechselt man indem man in der Baumstruktur Links den aktiven Branch wählt.
Zeile 49: Zeile 55:
 
* Wählt man eine einzelne Datei, kann auf der rechten Seite gesehen werden, welche Änderungen dies beinhaltet.
 
* 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.
 
* Hier können auch einzelne Codeschnipsel zur Staging Area hinzugefügt werden.
 +
<br style="clear: both"/>
  
 
=== Änderungen Stashen ===
 
=== Änderungen Stashen ===
 +
[[Datei:sourcetree_stash_context.png|300px|miniatur|rechts|Stash Einträge.]]
 
Solltet ihr Änderungen durchgeführt haben, die ihr nicht committen wollt, so könnt ihr diese auslagern und später wieder zurückführen. Dies nennt sich bei Git Stashen.
 
Solltet ihr Änderungen durchgeführt haben, die ihr nicht committen wollt, so könnt ihr diese auslagern und später wieder zurückführen. 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.
 
# Warnung: Beim Stashen werden alle Änderungen (Staged und Unstaged) zu einem Stash hinzugefügt. Beim wiederherstellen, erscheinen diese Änderungen alle als Unstaged.
Zeile 56: Zeile 64:
 
# Nun erscheint Links in der Baumstruktur ein neuer Eintrag im Knoten "Stashes".
 
# Nun erscheint Links in der Baumstruktur ein neuer Eintrag im Knoten "Stashes".
 
#* Mit dessen Kontextmenü können die Änderungen zurück gespielt werden.
 
#* Mit dessen Kontextmenü können die Änderungen zurück gespielt werden.
 +
<br style="clear: both"/>
  
 
=== Änderungen Committen ===
 
=== Änderungen Committen ===
 +
[[Datei:sourcetree_commit.png|300px|miniatur|rechts|Committen.]]
 
# Wechsel in die Commit Ansicht mit dem Button "Commit" in der Toolbar.
 
# Wechsel in die Commit Ansicht mit dem Button "Commit" in der Toolbar.
 
# Links sind wie bekannt Staged und Unstaged Änderungen zu sehen.
 
# Links sind wie bekannt Staged und Unstaged Änderungen zu sehen.
Zeile 65: Zeile 75:
 
# Mit einem Klick auf "Commit" beim Kommentarfeld wird der Commit gespeichert.
 
# Mit einem Klick auf "Commit" beim Kommentarfeld wird der Commit gespeichert.
 
#* Diese Änderungen sind vorerst noch Lokal!
 
#* Diese Änderungen sind vorerst noch Lokal!
 +
<br style="clear: both"/>
  
 
=== Externe Änderungen ziehen: Pull (Fetch & Merge) ===
 
=== Externe Änderungen ziehen: Pull (Fetch & Merge) ===
 +
[[Datei:sourcetree_pull.png|300px|miniatur|rechts|Pullen.]]
 
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.
 
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.
# Wähle den Button "Pull" in der Toolbar
+
# Den Button "Pull" in der Toolbar benutzen
 
# Hier können die Standardeinstellungen übernommen werden.
 
# Hier können die Standardeinstellungen übernommen werden.
 
# Git versucht alle Änderungen automatisch zu mergen. Sollte dies nicht funktionieren erscheint eine Fehlermeldung.
 
# Git versucht alle Änderungen automatisch zu mergen. Sollte dies nicht funktionieren erscheint eine Fehlermeldung.
 
# Bei einem Konflikt muss manuell gemerged werden.
 
# Bei einem Konflikt muss manuell gemerged werden.
 +
<br style="clear: both"/>
  
 
=== Konflikte beheben / Dateien Mergen ===
 
=== Konflikte beheben / Dateien Mergen ===
Zeile 78: Zeile 91:
 
# Um diesen zu beheben wechselnt man in die Branch Ansicht und dort in den ersten Eintrag "Uncommitted changes".
 
# 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.
 
# Hier erscheinen im Bereich "Unstaged files" alle Dateien die Konflikte haben.
# Für Jede Datei gehe wie folgt vor:
+
# Für Jede Datei wird wie folgt vorgegangen:
## Öffne das Kontextmenü der Datei.
+
## Das Kontextmenü der Datei öffnen.
## Wähle "Resolve Conflicts->Launch External Merge Tool".
+
## "Resolve Conflicts->Launch External Merge Tool" wählen.
 
## P4Merge wird nun gestartet. Man sieht 3 Dateien nebeneinander und eine darunter.
 
## P4Merge wird nun gestartet. Man sieht 3 Dateien nebeneinander und eine darunter.
 
##* In der Mitte ist die Basis Datei zu sehen
 
##* In der Mitte ist die Basis Datei zu sehen
Zeile 95: Zeile 108:
 
## Danach bleibt eine Datei übrig: dateiname.orig. Diese kann gelöscht werden falls nicht weiter benötigt.
 
## 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.
 
# Sind alle Konflikte behoben, kann in die "Commit" Ansicht gewechselt werden, um die behobenen Konflikte zu committen.
 +
  
 
=== Änderungen zum Server pushen ===
 
=== Änderungen zum Server pushen ===
# Vor dem pushen immer sicherstellen, dass man auf dem aktuellsten Stand ist (siehe Pull)
+
# Vor dem pushen ist sicher zu stellen, dass man auf dem aktuellsten Stand ist (siehe Pull).
 
# Pushen kann man auf zwei Varianten:
 
# Pushen kann man auf zwei Varianten:
#* Über den "Push" Button der Toolbar. Dieser wählt allerdings alle Branches aus. Dies ist nicht zu empfehlen. Wählt hier nur den Branch aus, den ihr wirklich pushen wollt.
+
#* Ü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.
 
#* Über das Kontextmenü des Branches ("Push to origin/..."). Dies wählt nur den jeweiligen Branch aus.
  
 
== GitFlow ==
 
== GitFlow ==
In SourceTree gibt es eine Möglichkeit das erstellen von Feature Branches etwas komfortabler zu gestalten. Dabei wird der [https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow GitFlow Workflow] genutzt. Lest euch die Beschreibung nach Möglichkeit kurz durch.
+
In SourceTree gibt es eine Möglichkeit das erstellen von Feature Branches etwas komfortabler zu gestalten. Dabei wird der [https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow GitFlow Workflow] genutzt. Es empfiehlt sich die Beschreibung kurz durch zu lesen.
  
Wie dies zu benutzen ist, ist in diesem Video schnell erklärt:
+
Wie dies In SourceTree zu benutzen ist, ist in diesem Video schnell erklärt:
 
{{#ev:youtube|1lSdqrs2f5c|650x500}}
 
{{#ev:youtube|1lSdqrs2f5c|650x500}}

Version vom 8. März 2015, 17:56 Uhr

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.

Vorbereitung

Lediglich P4Merge muss installiert werden.
  1. SourceTree installieren
  2. P4Merge installieren
    • Bei der Installation muss lediglich der Haken bei P4Merge gesetzt werden.. alle anderen Tools sind nicht notwendig.
  3. 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

  1. In SourceTree die Optionen öffnen (Tools->Options)
  2. Den Tab "General" wählen
  3. Full Name erscheint als solches in Github.
  4. Email muss der Github Email entsprechen.

Merge Tool konfigurieren

  1. In SourceTree die Optionen öffnen (Tools->Options)
  2. Den Tab "Diff" wählen
  3. "P4Merge" muss als Option bei "External Diff Tool" und "Merge Tool" gewählt sein.

Klonen des Repositories

Klonen eines Repositories.
  1. In der Toolbar den Button "Clone / New" benutzen.
  2. Im Tab "Clone Repository" folgende Konfiguration setzen:
  3. Es wird nun alles heruntergeladen. Dies kann etwas dauern.


Normaler Git Workflow

Einen entfernten Branch auschecken

Klonen eines Repositories.
  • 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 habt ihr den Branch lokal verfügbar und könnt jederzeit zu diesem Wechseln.
  • Der Branch wird nach Checkout automatisch ausgewählt.

Führt diese Schritte für den Branch "develop" aus.

Änderungen Stagen

Branch Ansicht, Staged und Unstaged Files.
  • 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

Stash Einträge.

Solltet ihr Änderungen durchgeführt haben, die ihr nicht committen wollt, so könnt ihr diese auslagern und später wieder zurückführen. Dies nennt sich bei Git Stashen.

  1. Warnung: Beim Stashen werden alle Änderungen (Staged und Unstaged) zu einem Stash hinzugefügt. Beim wiederherstellen, erscheinen diese Änderungen alle als Unstaged.
  2. Dazu klickt man auf den Button "Stash" in der Toolbar und vergibt einen Namen.
  3. 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

Committen.
  1. Wechsel in die Commit Ansicht mit dem Button "Commit" in der Toolbar.
  2. Links sind wie bekannt Staged und Unstaged Änderungen zu sehen.
  3. Diese können hier noch einmal angepasst werden.
  4. Unten erscheint ein Kommentar Feld. Hier sollte kurz beschrieben werden, was der Commit ändert.
  5. Der Haken "Push changes.." sollte nicht gewählt werden.
  6. Mit einem Klick auf "Commit" beim Kommentarfeld wird der Commit gespeichert.
    • Diese Änderungen sind vorerst noch Lokal!


Externe Änderungen ziehen: Pull (Fetch & Merge)

Pullen.

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.

  1. Den Button "Pull" in der Toolbar benutzen
  2. Hier können die Standardeinstellungen übernommen werden.
  3. Git versucht alle Änderungen automatisch zu mergen. Sollte dies nicht funktionieren erscheint eine Fehlermeldung.
  4. Bei einem Konflikt muss manuell gemerged werden.


Konflikte beheben / Dateien Mergen

  1. Ist ein Konflikt beim Mergen entstanden, so wird dies in der Statusleiste angezeigt.
  2. Um diesen zu beheben wechselnt man in die Branch Ansicht und dort in den ersten Eintrag "Uncommitted changes".
  3. Hier erscheinen im Bereich "Unstaged files" alle Dateien die Konflikte haben.
  4. Für Jede Datei wird wie folgt vorgegangen:
    1. Das Kontextmenü der Datei öffnen.
    2. "Resolve Conflicts->Launch External Merge Tool" wählen.
    3. 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.
    4. P4Merge versucht soweit es geht eine Vorauswahl zu treffen.
      • Diese sollte dennoch auf Korrektheit überprüft werden.
    5. Im Unterren Bereich sieht man nun welche Änderungen übernommen werden.
    6. 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.
    7. Sind alle Änderungen vollzogen, kann P4Merge geschlossen werden (speichern nicht vergessen)
    8. Danach bleibt eine Datei übrig: dateiname.orig. Diese kann gelöscht werden falls nicht weiter benötigt.
  5. Sind alle Konflikte behoben, kann in die "Commit" Ansicht gewechselt werden, um die behobenen Konflikte zu committen.


Änderungen zum Server pushen

  1. Vor dem pushen ist sicher zu stellen, dass man auf dem aktuellsten Stand ist (siehe Pull).
  2. 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. Es empfiehlt sich die Beschreibung kurz durch zu lesen.

Wie dies In SourceTree zu benutzen ist, ist in diesem Video schnell erklärt: