Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:git:programmieren:start [18.03.2025 20:18] – [Konflikte] Frank Schiebel | faecher:informatik:oberstufe:git:programmieren:start [18.03.2025 20:40] (aktuell) – Frank Schiebel | ||
---|---|---|---|
Zeile 15: | Zeile 15: | ||
* Wenn man ein funktionierendes Programm hat, und Änderungen vornehmen möcht, bei denen man sich unsicher fühlt, ob die geplante Programmierung klappt, kann man sich den aktuellen Stand als Commit sichern. | * Wenn man ein funktionierendes Programm hat, und Änderungen vornehmen möcht, bei denen man sich unsicher fühlt, ob die geplante Programmierung klappt, kann man sich den aktuellen Stand als Commit sichern. | ||
* Vorsicht ist bei " | * Vorsicht ist bei " | ||
- | |||
- | ===== Übung: Branching und Merging ===== | ||
- | |||
- | Wir erstellen ein Bluej Projekt, das wir mit git verwalten wollen. Dabei verwenden wir zunächst nicht die eingebaute git Funktionalität von Bluej, hier soll es darum gehen, wie man mit einfachen Verzweigungen (Branches) arbeiten kann. Du kannst das Beispiel einfach nachvollziehen, | ||
- | |||
- | * Lege ein neues Bluej-Projekt an. | ||
- | * Öffne eine Kommandozeile im Projektverzeichnis | ||
- | * Initialisiere ein git-Repository im Projektverzeichnis. | ||
- | |||
- | Lösungsvorschläge zu den Programmieraufgaben findest du auf [[faecher: | ||
- | |||
- | ---- | ||
- | {{: | ||
- | === (A1) === | ||
- | |||
- | Überhemne den " | ||
- | |||
- | {{ : | ||
- | |||
- | Ändere die Modulol-Methode jetzt so ab, dass sie dem zweiten, sehr kurzen Lösungsvorschlag entspricht. Erstelle einen weiteren Commit mit sinnvoller Commit Message. | ||
- | |||
- | Im Ergebnis könnte das dann so aussehen: | ||
- | |||
- | <code bash> | ||
- | $ git lg | ||
- | * b664f26 - (HEAD -> main) Modulo Methode gekürzt (vor 13 Sekunden) | ||
- | * 143f0be - Erster commit (vor 6 Minuten) | ||
- | </ | ||
- | |||
- | " | ||
- | |||
- | Als Zwischenergebnis erhält man einen Verlauf wie den Folgenden: | ||
- | |||
- | <code bash> | ||
- | $ git lg | ||
- | * 118e70a - (HEAD -> main) Tauschen Methode wie in Vorschlag 2 (vor 3 Sekunden) | ||
- | * 99ba536 - Tauschen Methode wie in Vorschlag 1 (vor 25 Minuten) | ||
- | * b664f26 - Modulo Methode gekürzt (vor 30 Minuten) | ||
- | * 143f0be - Erster commit (vor 35 Minuten) | ||
- | </ | ||
- | |||
- | ==== Einen weiteren Zweig (Branch) erstellen ==== | ||
- | |||
- | Erstelle mit dem Befehl '' | ||
- | |||
- | <code bash> | ||
- | $ git branch developement | ||
- | $ git checkout developement | ||
- | Zu Branch ' | ||
- | $ git branch | ||
- | * developement | ||
- | main | ||
- | </ | ||
- | |||
- | Der Branch mit dem Sternchen ist der aktuelle Zweig. | ||
- | |||
- | |||
- | |||
- | ---- | ||
- | {{: | ||
- | === (A2) === | ||
- | |||
- | Füge eine Lösung für die Aufgabe 3 am Ende deiner Klassendatei im Projekt ein und erstelle einen Commit. Betrachte dann den Verlauf deiner Commits. | ||
- | |||
- | <code bash> | ||
- | $ git lg --all | ||
- | * aba7dbd - (HEAD -> developement) Pyramide (vor 11 Sekunden) | ||
- | * 118e70a - (main) Tauschen Methode wie in Vorschlag 2 (vor 22 Minuten) | ||
- | * 99ba536 - Tauschen Methode wie in Vorschlag 1 (vor 47 Minuten) | ||
- | * b664f26 - Modulo Methode gekürzt (vor 51 Minuten) | ||
- | * 143f0be - Erster commit (vor 57 Minuten) | ||
- | </ | ||
- | |||
- | Auf den ersten Blick ist keine " | ||
- | |||
- | ++++ Erklärung | '' | ||
- | |||
- | Ein neue Anforderung macht es jetzt nötig, dass im Hauptentwicklungszweig ('' | ||
- | |||
- | Gehe dazu wie folgt vor: | ||
- | |||
- | * Stelle sicher, dass dein Arbeitsverzeichnis " | ||
- | * Wechsle zum '' | ||
- | * Öffne in BlueJ deine Klassendate neu - du erkennst, dass die Lösung für das Pramidenvolumen jetzt wieder verschwunden ist. | ||
- | * Füge den Lösungsvorschlag für Aufgabe 4 **direkt nach dem Konstruktor**((Nicht am Ende)) in deine Klasse ein und erstelle einen Commit. | ||
- | * Betrachte den Verlauf der Commits mit '' | ||
- | |||
- | |||
- | Jetzt ist die Verzweigung direkt erkennbar: | ||
- | |||
- | <code bash> | ||
- | $ git lg --all | ||
- | * 9b12ec6 - (HEAD -> main) Alterstest (vor 3 Sekunden) | ||
- | | * aba7dbd - (developement) Pyramide (vor 16 Minuten) | ||
- | |/ | ||
- | * 118e70a - Tauschen Methode wie in Vorschlag 2 (vor 37 Minuten) | ||
- | * 99ba536 - Tauschen Methode wie in Vorschlag 1 (vor 62 Minuten) | ||
- | * b664f26 - Modulo Methode gekürzt (vor 67 Minuten) | ||
- | * 143f0be - Erster commit (vor 72 Minuten) | ||
- | </ | ||
- | |||
- | |||
- | |||
- | ---- | ||
- | {{: | ||
- | === (A3) === | ||
- | |||
- | * Wechsle wieder zum '' | ||
- | * Füge die Lösungen für die Aufgaben 5 und 6 am Ende deiner Klasse ein | ||
- | * Erstelle nach jeder neuen Lösung einen Commit | ||
- | |||
- | Deine entstehende Commit-History sollte in etwas so aussehen: | ||
- | |||
- | < | ||
- | $ git lg --all | ||
- | * 74b05e3 - (HEAD -> developement) schulnoten (vor 13 Sekunden) | ||
- | * 4370307 - Geradengleichung (vor 73 Sekunden) | ||
- | * aba7dbd - Pyramide (vor 20 Minuten) | ||
- | | * 9b12ec6 - (main) Alterstest (vor 5 Minuten) | ||
- | |/ | ||
- | * 118e70a - Tauschen Methode wie in Vorschlag 2 (vor 42 Minuten) | ||
- | * 99ba536 - Tauschen Methode wie in Vorschlag 1 (vor 67 Minuten) | ||
- | * b664f26 - Modulo Methode gekürzt (vor 71 Minuten) | ||
- | * 143f0be - Erster commit (vor 77 Minuten) | ||
- | </ | ||
- | |||
- | ==== Merging ==== | ||
- | |||
- | Deine Entwicklungsarbeiten sind nun abgeschlossen, | ||
- | |||
- | Das prinzipielle Vorgehen dabei ist folgendes: | ||
- | |||
- | * Wechsle auf den Branch in den du die Änderungen zusammenführen möchtest | ||
- | * Führe dort den Befhel '' | ||
- | * Dabei entsteht ein neuer Commit, für den du eine Commit Message eingeben musst. | ||
- | |||
- | Führe den Merge von '' | ||
- | |||
- | < | ||
- | $ git lg --all | ||
- | * | ||
- | |\ | ||
- | | * 74b05e3 - (developement) schulnoten (vor 4 Minuten) | ||
- | | * 4370307 - Geradengleichung (vor 5 Minuten) | ||
- | | * aba7dbd - Pyramide (vor 24 Minuten) | ||
- | * | 9b12ec6 - Alterstest (vor 8 Minuten) | ||
- | |/ | ||
- | * 118e70a - Tauschen Methode wie in Vorschlag 2 (vor 45 Minuten) | ||
- | * 99ba536 - Tauschen Methode wie in Vorschlag 1 (vor 70 Minuten) | ||
- | * b664f26 - Modulo Methode gekürzt (vor 75 Minuten) | ||
- | * 143f0be - Erster commit (vor 80 Minuten) | ||
- | </ | ||
- | |||
- | Der Branch '' | ||
- | |||
- | < | ||
- | $ git branch -d developement | ||
- | Branch developement entfernt (war 74b05e3). | ||
- | </ | ||
- | |||
- | ==== Konflikte ==== | ||
- | |||
- | Git hat beim zusammenführen der beiden Zweige automatisch einen Merge gemacht, weil wir die Lösung für Aufgabe 5 direkt nach dem Konstruktor eingefügt hatten und nicht nachtraglich ans Ende des Main Zweiges: | ||
- | |||
- | {{ : | ||
- | |||
- | Es gab also keine Zeile in der Datei, die ausgehend vom letzten gemeinsamen Commit " | ||