Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Pull Request in Gitea öffnen und mergen

Nach dieser Lektion: Ich kann einen Branch pushen, auf einem Server einen Pull Request öffnen und ihn mergen.

Lektion, 60 Min.13 BefehleGit-und-Gitea-Lab: clone, commit und push auf einem eigenen Git-Server lernen

Ein Pull Request auf einem echten Server

Ein Team hält seinen Code auf einem Server wie Gitea oder GitHub. Niemand ändert den Hauptzweig direkt. Sie pushen einen Branch, öffnen einen Pull Request, und eine Kollegin liest ihn zuerst.

In dieser Lektion machen Sie alles im Gitea des Labs, vom Push bis zum Merge.

Am Ende dieser Lektion

Notiz

Ich kann einen Branch pushen, auf einem Server einen Pull Request öffnen und ihn mergen.

Schlüsselbegriffe

BegriffWas er bedeutet
Pull Requesteine Bitte, einen Branch zu mergen, mit einer Seite zur Prüfung
APIein Weg, auf dem ein Programm einen Server um etwas bittet
Mergebarlässt sich ohne Konflikt mergen
Merge-Commitein Commit mit zwei Vorgängern, der zwei Branches verbindet
Upstreamder Remote-Branch, mit dem Ihr Branch verknüpft ist

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Der Branch muss zuerst auf den Server

Ein Pull Request braucht den Branch auf dem Server, also pushen Sie ihn. Git kann den Antrag nicht für Sie stellen.

Legen Sie zuerst ein Repository auf Gitea an. Ein Programm kann das über die API tun. Die Option -u von git push verknüpft Ihren Branch mit seinem Zwilling auf dem Remote, dem Upstream. Das Passwort des Labs ist öffentlich, Sie dürfen es hier in eine Adresse schreiben. Tun Sie das nie mit einem echten Passwort.

Ein Repository auf Gitea anlegen

Befehl
curl -s -o /dev/null -w '%{http_code}\n' -u student:student -H 'Content-Type: application/json' -d '{"name":"buchladen-pruefung","auto_init":true,"default_branch":"main"}' http://gitea:3000/api/v1/user/repos

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Es klonen

Befehl
git clone http://student:student@gitea:3000/student/buchladen-pruefung.git

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Einen Branch für die Änderung beginnen

Befehl
git -C buchladen-pruefung switch -c tee-preis

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Eine Zeile an die README hängen

Befehl
printf 'Tee kostet ab Montag 2 Euro.\n' >> buchladen-pruefung/README.md

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Änderung committen

Befehl
git -C buchladen-pruefung commit -am "Teepreis nennen"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Den Branch pushen

Befehl
git -C buchladen-pruefung push -u origin tee-preis

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Den Pull Request öffnen und prüfen

Klicken Sie auf der Seite des Repositorys auf New Pull Request, oder fragen Sie die API, was der Knopf tut. Der Server rechnet dann aus, ob der Branch mergebar ist.

Eine prüfende Person liest den Diff und schreibt Kommentare. Gitea lässt Sie die eigene Änderung nicht freigeben, also kommentieren Sie hier. In einem Team gibt eine Kollegin frei.

Den Pull Request öffnen

Befehl
curl -s -o /dev/null -w '%{http_code}\n' -u student:student -H 'Content-Type: application/json' -d '{"title":"Teepreis nennen","head":"tee-preis","base":"main","body":"Tee kostet ab Montag 2 Euro."}' http://gitea:3000/api/v1/repos/student/buchladen-pruefung/pulls

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Fragen, ob er konfliktfrei mergt

Befehl
curl -s http://gitea:3000/api/v1/repos/student/buchladen-pruefung/pulls/1 | grep -o '"mergeable":[a-z]*'

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Einen Prüfkommentar schreiben

Befehl
curl -s -o /dev/null -w '%{http_code}\n' -u student:student -H 'Content-Type: application/json' -d '{"body":"Sieht richtig aus."}' http://gitea:3000/api/v1/repos/student/buchladen-pruefung/issues/1/comments

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Den Diff wie eine prüfende Person lesen

Befehl
curl -s http://gitea:3000/api/v1/repos/student/buchladen-pruefung/pulls/1.diff

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Der Merge geschieht auf dem Server

Ist die Prüfung fertig, drückt jemand auf Merge. Der Server legt auf main einen Merge-Commit an. Ihr Rechner weiß davon noch nichts.

Darum führen Sie git fetch aus. Es lädt das Neue herunter, ohne Ihre Dateien zu ändern. Dann lesen Sie den Verlauf von origin/main, der Kopie, die Git vom Branch des Servers hält.

Den Pull Request mergen

Befehl
curl -s -o /dev/null -w '%{http_code}\n' -u student:student -H 'Content-Type: application/json' -d '{"Do":"merge"}' http://gitea:3000/api/v1/repos/student/buchladen-pruefung/pulls/1/merge

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Das Neue herunterladen

Befehl
git -C buchladen-pruefung fetch

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Den Verlauf von main auf dem Server zeichnen

Befehl
git -C buchladen-pruefung --no-pager log --graph --format=%s origin/main

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein häufiger Fehler

Warnung

Viele glauben, der Merge eines Pull Requests ändere die Dateien auf dem eigenen Rechner. Das stimmt nicht. Der Merge geschieht auf dem Server. Mit git fetch sehen Sie ihn. Wechseln Sie dann zu main und führen Sie git pull aus, um den Merge in Ihr eigenes main zu holen.

Über dieses Lab und seinen Quellcode: Git-und-Gitea-Lab: clone, commit und push auf einem eigenen Git-Server lernen

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.