Git: Unterschied zwischen den Versionen

Aus Das Sopra Wiki
Roth (Diskussion | Beiträge)
Roth (Diskussion | Beiträge)
Zeile 102: Zeile 102:
* '''master''' => Hier ist der aktuelle Stand des Projekts in Lauffähigem Zustand mit fertig implementierten Tasks. Dieser Branch ist Grundlage für die Bewertung des Spiels und muss zu jeder Zeit ein compilier und lauffähiges Spiel darstellen.
* '''master''' => Hier ist der aktuelle Stand des Projekts in Lauffähigem Zustand mit fertig implementierten Tasks. Dieser Branch ist Grundlage für die Bewertung des Spiels und muss zu jeder Zeit ein compilier und lauffähiges Spiel darstellen.
* '''develop''' => Hier werden die Tasks entwickelt. Sie müssen nicht zwangsläufig fertig sein, aber der develop Branch soll zu jeder Zeit kompillieren und laufen.
* '''develop''' => Hier werden die Tasks entwickelt. Sie müssen nicht zwangsläufig fertig sein, aber der develop Branch soll zu jeder Zeit kompillieren und laufen.
* feature/<task> => Feature branches ''können'' als Erweiterung des develop branches gesehen werden. Hier wird ein einzelner task implementiert bis er fertig ist und in den develop Branch gemerged wird.
* feature/<task> => Feature branches ''können'' als Erweiterung des develop Branches gesehen werden. Hier wird ein einzelner Task implementiert bis er fertig ist und in den develop Branch gemerged wird.
==== Wichtige branch Befehle ====
==== Wichtige branch Befehle ====
   
   
Zeile 110: Zeile 110:
  git branch <branch_name>      # Erstellt einen neuen Branch <branch_name>.
  git branch <branch_name>      # Erstellt einen neuen Branch <branch_name>.
  git checkout -b <branch_name> # Erstellt <branch_name> und wechselt in diesen falls er noch nicht existiert.
  git checkout -b <branch_name> # Erstellt <branch_name> und wechselt in diesen falls er noch nicht existiert.
git branch -d <branch_name>  # Löscht den <branch_name> Branch.


==== Branch mergen ====
==== Branch mergen ====
Möchte man <
Möchte man einen feature Branch nach develop mergen, wechselt man zunächst in den develop branch
==== Neuen Branch erstellen ====
 
git checkout develop
 
Jetzt merged man den feature branch mit
 
git merge feature/<task>
 
Je nach Zustand des Repository gibt es nun mehrere Szenarios was passiert:
 
* '''Fast-forward Merge''' Falls man den aktuellen HEAD des develop Branch durch einfaches zurücklaufen in der History des feature/<task> Branch erreichen kann, sind offensichtlich Konflikte ausgeschlossen und Git kann einfach den HEAD von develop auf den HEAD des feautre/<task> Branches zeigen lassen. Effektiv wird also alles was in feature/<brach> seit dem erstellen des feature/<brach> passiert ist auch in develop passieren.
* '''Recursive merge''' Falls in der Zwischenzeit der develop Branch weiterentwickelt wurde, ist ein Fast-forward Merge nicht mehr möglich. Falls es aber keine Dateien gibt, die in jetzt unterschiedliche Inhalte haben, wird bei einem recursive merge ein neuer Commit erstellt, der die Vereinigung der Änderungen beider Branches darstellt. Git fordert den Nutzer in diesem Fall auf, eine Commit Nachricht anzugeben. In der Regel Sollte diese dann lauten: "''Merge feature/<task> Evtl zusätzliche info oder Zusammenfassung für neues feature.''"
* '''Merge Konflikt''' Falls in beiden Branches Änderungen an gleichen Inhalten gemacht wurden, weiß Git nicht wie diese aufzulösen sind. Wie man Merge Konflikte löst ist in [[#Konflikte lösen|Konflikte lösen]] beschrieben.
* Weitere möglichkeiten zu mergen werden hier beschrieben: https://git-scm.com/docs/merge-strategies


==== Konflikte lösen ====
==== Konflikte lösen ====