Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:git:cloning:start [28.04.2021 18:34] – angelegt sbel | faecher:informatik:oberstufe:git:cloning:start [22.11.2024 08:42] (aktuell) – [Änderung auf den Server zurückkopieren] Frank Schiebel | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Geklonte Repositorys ====== | ====== Geklonte Repositorys ====== | ||
- | Zunächst ist ein Git-Repo wie wir gesehen haben, eine vollkommen lokale Angelegenheit - alle wichtigen | + | Zunächst ist ein Git-Repo wie wir gesehen haben, eine **vollkommen lokale Angelegenheit** - alle wichtigen |
+ | |||
+ | Um besser zusammenarbeiten zu können ist es möglich, ein Repo über entsprechende Mechanismen anderen Menschen zur Verfügung zu stellen, z.B. via Mail, SSH oder https. Diese Weitergabe muss nicht unbedingt öffentlich geschehen, sondern kann durchaus z.B. mit einem Passwort geschützt werden, so dass nur Mitglieder einer bestimmten Gruppe Zugriff auf das Repo haben. Außerdem kann zwischen lesendem Zugriff und schreibendem Zugriff unterschieden werden und vieles mehr. | ||
+ | |||
+ | Sehr beliebt sind für solche Austauschzwecke grafische Webanwendungen, | ||
+ | |||
+ | ===== Klonen eines Repositorys ===== | ||
+ | |||
+ | |||
+ | Ein so veröffentlichtes Repo kann man " | ||
+ | < | ||
+ | git clone https:// | ||
+ | </ | ||
+ | Die Adresse, von der das Repo geklont wird, heißt standardmäßig '' | ||
- | Um besser zusammenarbeiten zu können ist es möglich, ein Repo über entsprechende Mechanismen anderen Menschen zur Verfügung zu stellen, z.B. via SSH oder https. Diese Veröffentlichung muss nicht unbedingt öffentlich geschehen, sondern kann durchaus z.B. mit einem Passwort geschützt werden, so dass nur Mitglieder einer bestimmten Gruppe Zugriff auf das Repo haben. Außerdem kann unterschieden werden zwischen lesendem Zugriff und schreibendem Zugriff. | ||
{{ : | {{ : | ||
- | Ein so veröffentlichtes Repo kann man " | + | <code bash> |
+ | max@pc: | ||
+ | Klone nach 'git-kurs-tagebuch'... | ||
+ | remote: Enumerating objects: 12, done. | ||
+ | remote: Counting objects: 100% (12/12), done. | ||
+ | remote: Compressing objects: 100% (8/8), done. | ||
+ | remote: Total 12 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0) | ||
+ | Empfange Objekte: 100% (12/12), fertig. | ||
+ | Löse Unterschiede auf: 100% (1/1), fertig. | ||
+ | max@pc: | ||
+ | </ | ||
+ | Der Begriff des Klonens ist hier wörtlich zu nehmen - jetzt existiert eine vollständige Kopie des Repos auf dem lokalen Rechner, die alle Commits des ursprünglichen Repos nachverfolgbar enthält. Bevor man mit git arbeiten kann, muss man allerdings in das Verzeichnis hineinwechseln, | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | |||
+ | ===== Änderung auf den Server zurückkopieren ===== | ||
+ | |||
+ | Nun kann man mit dem Repo lokal ganz normal arbeiten, der wesentliche Unterschied zum ausschließlich " | ||
+ | |||
+ | Zunächst bearbeitet man lokal Dateien im Repo und erzeugt einen (oder mehrere Commits) : | ||
<code bash> | <code bash> | ||
- | [frank@rita tmp]$ git clone https://codeberg.org/ | + | max@pc: |
- | Klone nach ' | + | max@pc:git-kurs-tagebuch$ ls -la |
- | remote: Enumerating objects: 13923, done. | + | insgesamt 28 |
- | remote: Counting objects: 100% (13923/ | + | drwxr-xr-x 3 max max 4096 7. Okt 19:34 . |
- | remote: Compressing objects: 100% (3297/ | + | drwxr-xr-x 3 max max 4096 7. Okt 19:30 .. |
- | remote: Total 13923 (delta 9164), reused 12444 (delta 8081) | + | -rw-r--r-- 1 max max |
- | Empfange Objekte: 100% (13923/ | + | -rw-r--r-- 1 max max |
- | Löse Unterschiede auf: 100% (9164/ | + | drwxr-xr-x 8 max max 4096 7. Okt 19:31 .git |
+ | -rw-r--r-- 1 max max | ||
+ | -rw-r--r-- 1 max max | ||
+ | max@pc:git-kurs-tagebuch$ git add nachmittags.txt | ||
+ | max@pc:git-kurs-tagebuch$ git commit -m " | ||
+ | [main 354c303] Nachmittagsbeschäftigung ergänzt | ||
+ | 1 file changed, 2 insertions(+) | ||
+ | create mode 100644 nachmittags.txt | ||
+ | max@pc:git-kurs-tagebuch$ | ||
+ | |||
</ | </ | ||
- | Nun existiert eine vollständige lokale Kopie auf dem lokalen Rechner, die alle Commits des ursprünglichen Repos nachverfolgbar enthält: | ||
- | {{: | + | Mit dem Befehl '' |
+ | < | ||
+ | max@pc: | ||
+ | Auf Branch main | ||
+ | Ihr Branch ist 1 Commit vor ' | ||
+ | (benutzen Sie "git push", um lokale Commits zu publizieren) | ||
+ | |||
+ | nichts zu committen, Arbeitsverzeichnis unverändert | ||
+ | max@pc: | ||
+ | Username for ' | ||
+ | Password for ' | ||
+ | Objekte aufzählen: 4, fertig. | ||
+ | Zähle Objekte: 100% (4/4), fertig. | ||
+ | Delta-Kompression verwendet bis zu 4 Threads. | ||
+ | Komprimiere Objekte: 100% (2/2), fertig. | ||
+ | Schreibe Objekte: 100% (3/3), 312 Bytes | 312.00 KiB/s, fertig. | ||
+ | Gesamt 3 (Delta 1), Wiederverwendet 0 (Delta 0), Pack wiederverwendet 0 | ||
+ | To https:// | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Damit landen die Änderungen auf dem Server, von dem das Repo zuvor geklont wurde. Es darf aber natürlich nicht jeder auf jedes im Internet zugänglich Repository Änderung zurückspielen, | ||
+ | |||
+ | Wenn die Seite des Repositorys -- wie im Beispiel des Tagebuchs -- öffentlich zugänglich ist, kann aber **jeder** die Änderungen betrachten und das Repository zu sich klonen! | ||
+ | |||
+ | ---- | ||
+ | {{:aufgabe.png? | ||
+ | === (A1) === | ||
+ | |||
+ | * Öffne das Repo auf Codeberg: https:// | ||
+ | * Erstelle ein neues Verzeichnis '' | ||
+ | * Verändere in deinem Klon Inhalte des Repos und erstelle einen oder mehrere neue Commits. Versuche dann die Änderungen mit '' | ||
+ | |||
+ | Um die Änderungen selbst weiter verwalten zu können, muss man ein Repo verwenden, auf das man schreiben darf. [[https:// | ||
+ | |||
+ | ===== Aktuell bleiben mit " | ||
+ | |||
+ | Um Probleme beim " | ||
+ | |||
+ | Man sollte vor Arbeitsbeginn pullen und bevor man versucht zu pushen. wenn Konflikte auftreten, weil zwischenzeitlich Änderungen auf das zentrale Repository gepusht wurden, kann man diese zunächst lösen und dann das Ergebnis pushen. | ||
+ | |||
+ | <code bash> | ||
+ | max@pc: | ||
+ | remote: Enumerating objects: 5, done. | ||
+ | remote: Counting objects: 100% (5/5), done. | ||
+ | remote: Compressing objects: 100% (2/2), done. | ||
+ | remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0) | ||
+ | Entpacke Objekte: 100% (3/3), 329 Bytes | 29.00 KiB/s, fertig. | ||
+ | Von https:// | ||
+ | * [neuer Branch] | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Material ===== | ||
+ | |||
+ | * [[https:// | ||
+ |