faecher:informatik:oberstufe:git:cloning:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:git:cloning:start [28.04.2021 18:53] – [Änderung auf den Server zurückkopieren] sbelfaecher: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 Infos und die Snapshots werden im .git-Verzeichnis gespeichert. +Zunächst ist ein Git-Repo wie wir gesehen haben, eine **vollkommen lokale Angelegenheit** - alle wichtigen Informationen und die Snapshots werden im .git-Verzeichnis gespeichert. 
  
-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.+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, die bekannteste dürfte die Microsoft Plattform "Github" sein, in Deutschland ist eine bekannte Plattform "Codeberg"((https://codeberg.org/)) auf der sich auch viele Codebeispiele aus dem Wiki befinden. Man kann eine solche Austauschplattform aber auch selbst betreiben, wenn man möchte  
  
 ===== Klonen eines Repositorys ===== ===== Klonen eines Repositorys =====
  
  
-Ein so veröffentlichtes Repo kann man "klonen". Der Befehl lautet z.B. ''git clone https://codeberg.org/opyale/GitNex.git''. Die Adresse, von der das Repo geklont wird, heißt ''origin''.+Ein so veröffentlichtes Repo kann man "klonen". Der Befehl lautet z.B.  
 +<code> 
 +git clone https://codeberg.org/info-bw-wiki/git-kurs-tagebuch.git 
 +</code>  
 +Die Adresse, von der das Repo geklont wird, heißt standardmäßig ''origin''((Ein Repo kann mehr als einen Ursprug haben, dann heißen die auch unterschiedlich, aber das ist für Fortgeschrittene))
  
  
Zeile 14: Zeile 20:
  
 <code bash> <code bash>
-git clone https://codeberg.org/ironiemix/uebungsserver.git +max@pc:git-clone$ git clone https://codeberg.org/info-bw-wiki/git-kurs-tagebuch.git 
-Klone nach 'uebungsserver' ... +Klone nach 'git-kurs-tagebuch'... 
-remote: Enumerating objects: 163, done. +remote: Enumerating objects: 12, done. 
-remote: Counting objects: 100% (163/163), done. +remote: Counting objects: 100% (12/12), done. 
-remote: Compressing objects: 100% (126/126), done. +remote: Compressing objects: 100% (8/8), done. 
-remote: Total 163 (delta 52), reused 0 (delta 0) +remote: Total 12 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0) 
-Empfange Objekte: 100% (163/163), 23.05 KiB | 1.92 MiB/s, fertig. +Empfange Objekte: 100% (12/12), fertig. 
-Löse Unterschiede auf: 100% (52/52), fertig.+Löse Unterschiede auf: 100% (1/1), fertig. 
 +max@pc:git-clone$ 
 </code> </code>
  
-Nun existiert eine vollständige lokale Kopie auf dem lokalen Rechner, die alle Commits des ursprünglichen Repos nachverfolgbar enthält+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, das beim Klonen erstellt wurde - hier ''git-kurs-tagebuch'', das geht mit dem Befehl ''cd git-kurs-tagebuch''.
  
-{{ :faecher:informatik:oberstufe:git:cloning:auswahl_315.png |}}+{{ :faecher:informatik:oberstufe:git:cloning:2024-10-07_19-31.png |}}
  
  
Zeile 32: Zeile 39:
 ===== Änderung auf den Server zurückkopieren ===== ===== Änderung auf den Server zurückkopieren =====
  
-Nun kann man mit dem Repo lokal ganz normal arbeiten, der Unterschied zum "lokalen" Repo ist, dass dieses Repository weiss, woher es kommt, und das ermöglich es auch, Änderungen wieder auf den entfernten Server zurückzu"pushen". Der dazu verwendete Befehl lautet ''git push''.+Nun kann man mit dem Repo lokal ganz normal arbeiten, der wesentliche Unterschied zum ausschließlich "lokalen" Repository ist, dass dieses Repository "weiss", woher es kommt -- das ermöglicht es, Änderungen auch wieder auf den entfernten Server zurück zu übertragen. Der dazu verwendete Befehl lautet ''git push''. 
 + 
 +Zunächst bearbeitet man lokal Dateien im Repo und erzeugt einen (oder mehrere Commits) : 
 +<code bash> 
 +max@pc:git-kurs-tagebuch$ nano nachmittags.txt 
 +max@pc:git-kurs-tagebuch$ ls -la 
 +insgesamt 28 
 +drwxr-xr-x 3 max max 4096  7. Okt 19:34 .  
 +drwxr-xr-x 3 max max 4096  7. Okt 19:30 .. 
 +-rw-r--r-- 1 max max   55  7. Okt 19:30 aufstehen.txt 
 +-rw-r--r-- 1 max max   30  7. Okt 19:30 fruehstueck.txt 
 +drwxr-xr-x 8 max max 4096  7. Okt 19:31 .git 
 +-rw-r--r-- 1 max max   25  7. Okt 19:30 mittagessen.txt 
 +-rw-r--r-- 1 max max   16  7. Okt 19:34 nachmittags.txt 
 +max@pc:git-kurs-tagebuch$ git add nachmittags.txt  
 +max@pc:git-kurs-tagebuch$ git commit -m "Nachmittagsbeschäftigung ergänzt" 
 +[main 354c303] Nachmittagsbeschäftigung ergänzt 
 + 1 file changed, 2 insertions(+) 
 + create mode 100644 nachmittags.txt 
 +max@pc:git-kurs-tagebuch$  
 + 
 + 
 +</code> 
 + 
 + 
 +Mit dem Befehl ''git push'' kann man die Änderungen nun zum "origin" zurück übertragen:  
 +<code> 
 +max@pc:git-kurs-tagebuch$ git status 
 +Auf Branch main 
 +Ihr Branch ist 1 Commit vor 'origin/main'
 +  (benutzen Sie "git push", um lokale Commits zu publizieren) 
 + 
 +nichts zu committen, Arbeitsverzeichnis unverändert 
 +max@pc:git-kurs-tagebuch$ git push 
 +Username for 'https://codeberg.org': geheim 
 +Password for 'https://geheim@codeberg.org':  
 +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://codeberg.org/info-bw-wiki/git-kurs-tagebuch.git 
 +   d7aaac4..354c303  main -> main 
 +</code> 
 + 
 +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, sondern nur diejenigen, die dazu berechtigt sind. Wenn man den dargestellten Ablauf genau studiert, erkennt man, dass es notwendig war, Benutzername und Passwort anzugeben.   
 + 
 +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?nolink  |}} 
 +=== (A1) === 
 + 
 +  * Öffne das Repo auf Codeberg: https://codeberg.org/info-bw-wiki/git-kurs-tagebuch Erkunde dort in der Weboberfläche die Änderungen. Findest du den Branch mit den Blaubeeren zum Frühstück in der Weboberfläche von Codeberg? 
 +  * Erstelle ein neues Verzeichnis ''git-uebungen'', wechsle hinein. Klone das tagebuch Repo von Codeberg. Wo findest du in der Weboberfläche die Adresse, die du dem ''git clone'' Befehl übergeben musst? 
 +  * Verändere in deinem Klon Inhalte des Repos und erstelle einen oder mehrere neue Commits. Versuche dann die Änderungen mit ''git push'' wieder auf den Codeberg Server zu übertragen. Warum gelingt das nicht? 
 + 
 +Um die Änderungen selbst weiter verwalten zu können, muss man ein Repo verwenden, auf das man schreiben darf. [[https://info-bw.de/faecher:informatik:oberstufe:git:vorlage_klonen:start|Wie das geht steht hier]]. 
 + 
 +===== Aktuell bleiben mit "pull" ===== 
 + 
 +Um Probleme beim "pushen" von Änderungen zu vermeiden - besonders wenn man in einem Team an einem Repo arbeitet, oder wenn man das Repo auf mehreren Rechnern gleichzeitig bearbeitet, muss man seine lokale Arbeitskopie aktuell halten. Das geschieht mit dem Befehl ''git pull''
 + 
 +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:git-kurs-tagebuch$ git pull 
 +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://codeberg.org/info-bw-wiki/git-kurs-tagebuch 
 + * [neuer Branch]    blaubeerfruehstueck -> origin/blaubeerfruehstueck 
 +</code> 
 + 
 + 
 +===== Material ===== 
 + 
 + * [[https://slides.info-bw.de/fs-wiki-git-remote/|Präsentation: Git Remote]] [[https://slides.info-bw.de/fs-wiki-git-remote/?print-pdf|(PDF)]]((Link öffnen, dann aus dem Browser in ein PDF drucken)) [[https://codeberg.org/slides-fs/fs-wiki-git-remote|(Code)]]
  
-Zunächst bearbeitet man lokal Dateien im Repo und erzeugt einen (oderer mehrere Commits) : 
  
-{{ :faecher:informatik:oberstufe:git:cloning:auswahl_317.png |}}+ 
  • faecher/informatik/oberstufe/git/cloning/start.1619635981.txt.gz
  • Zuletzt geändert: 28.04.2021 18:53
  • von sbel