Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
talit:git_github [2022-02-02 21:26] – [2. GitHub] sca | talit:git_github [2022-02-03 11:56] (aktuell) – sca | ||
---|---|---|---|
Zeile 6: | Zeile 6: | ||
Eleganter ist die Verwendung von einem **Versionierungstool**. Dieses erlaubt es einem **Snapshots** von einem Dokument zu erstellen, also den aktuellen Zustand eines Dokuments zu speichern. Solche Tools machen nicht immer eine ganze Kopie vom Dokument, sondern //merken sich nur die Unterschiede// | Eleganter ist die Verwendung von einem **Versionierungstool**. Dieses erlaubt es einem **Snapshots** von einem Dokument zu erstellen, also den aktuellen Zustand eines Dokuments zu speichern. Solche Tools machen nicht immer eine ganze Kopie vom Dokument, sondern //merken sich nur die Unterschiede// | ||
+ | |||
+ | Die **versteckten Ordner / Dateien** kannst du wie folgt ein- und ausblenden. Gehe dazu in den File-Explorer / Finder: | ||
+ | * Windows: Ansicht / Ausgeblendete Elemente | ||
+ | * Mac: CMD + Shift + . | ||
Wir arbeiten hier mit dem Versionierungstool **Git**, welches gleichzeitig auch der Industriestandard und gratis ist. Weiter arbeiten wir mit **GitHub**, eine Art Online-Cloud für Projekte, die mit Git versioniert werden. GitHub ist eine hervorragende Lösung für **Kollaborationen**: | Wir arbeiten hier mit dem Versionierungstool **Git**, welches gleichzeitig auch der Industriestandard und gratis ist. Weiter arbeiten wir mit **GitHub**, eine Art Online-Cloud für Projekte, die mit Git versioniert werden. GitHub ist eine hervorragende Lösung für **Kollaborationen**: | ||
Zeile 55: | Zeile 59: | ||
Der wichtigste git-Befehl ist | Der wichtigste git-Befehl ist | ||
- | ``` | + | <code bash> |
git status | git status | ||
- | ``` | + | </ |
Er zeigt dir den **aktuellen Status** eines Repositories an. | Er zeigt dir den **aktuellen Status** eines Repositories an. | ||
Zeile 71: | Zeile 75: | ||
Um ein **neues Git Repository zu initialisieren**, | Um ein **neues Git Repository zu initialisieren**, | ||
- | ``` | + | <code bash> |
git init | git init | ||
- | ``` | + | </ |
Dein lokales Repository besteht aus drei **Instanzen**, | Dein lokales Repository besteht aus drei **Instanzen**, | ||
- | {{: | + | {{: |
Hast du gerade ein Repository initialisiert, | Hast du gerade ein Repository initialisiert, | ||
**Einzelnes File** dem **Index hinzuzufügen**: | **Einzelnes File** dem **Index hinzuzufügen**: | ||
- | ``` | + | <code bash> |
git add < | git add < | ||
- | ``` | + | </ |
**Alle Files** (auch in Unterordnern) dem **Index hinzuzufügen**: | **Alle Files** (auch in Unterordnern) dem **Index hinzuzufügen**: | ||
- | ``` | + | <code bash> |
git add . | git add . | ||
- | ``` | + | </ |
Tippst du wieder `git status` werden diese Dateien jetzt in Grün dargestellt. | Tippst du wieder `git status` werden diese Dateien jetzt in Grün dargestellt. | ||
Nun musst du deine **Änderungen noch bestätigen**, | Nun musst du deine **Änderungen noch bestätigen**, | ||
- | ``` | + | <code bash> |
git commit -am " | git commit -am " | ||
- | ``` | + | </ |
Mit diesem ersten Commit hast du eine erste Version erstellt, quasi einen ersten *Snapshot*. Der letzte Teil des Befehls ist eine **Commit-Nachricht**, | Mit diesem ersten Commit hast du eine erste Version erstellt, quasi einen ersten *Snapshot*. Der letzte Teil des Befehls ist eine **Commit-Nachricht**, | ||
* Commit-Nachrichten sollten auf **Englisch** geschrieben werden. | * Commit-Nachrichten sollten auf **Englisch** geschrieben werden. | ||
Zeile 106: | Zeile 110: | ||
Nun kannst du weiter an deinen Dokumenten arbeiten. Immer, wenn du einen **neuen Commit/ | Nun kannst du weiter an deinen Dokumenten arbeiten. Immer, wenn du einen **neuen Commit/ | ||
- | ``` | + | <code bash> |
- | // Übersicht verschaffen über Status des Repositorys | + | # Übersicht verschaffen über Status des Repositorys |
git status | git status | ||
- | // Neue Files hinzufügen | + | # Neue Files hinzufügen |
git add ... | git add ... | ||
- | // Change committen: | + | # Change committen: |
git commit -am " | git commit -am " | ||
- | // vergewissere dich, dass alles i.O. | + | # vergewissere dich, dass alles i.O. |
git status | git status | ||
- | ``` | + | </ |
Dies sind die Befehle, die du 95% der Zeit benötigst. Lerne sie auswendig! | Dies sind die Befehle, die du 95% der Zeit benötigst. Lerne sie auswendig! | ||
Zeile 134: | Zeile 138: | ||
**Datei/ | **Datei/ | ||
- | ``` | + | <code bash> |
git rm --cached fileName | git rm --cached fileName | ||
git rm -r --cached folderName | git rm -r --cached folderName | ||
- | ``` | + | </ |
**Zeige alle von Git getrackten Dateien** | **Zeige alle von Git getrackten Dateien** | ||
- | ``` | + | <code bash> |
git ls-files # oder: | git ls-files # oder: | ||
git ls-tree -r master | git ls-tree -r master | ||
- | ``` | + | </ |
===== - GitHub ===== | ===== - GitHub ===== | ||
- | **GitHub** ist eine Art // | + | **GitHub** ist eine Art // |
- | Ein GitHub-Repository kann entweder **private** (nur für Author zugänglich und Leute, die explizit dazu berechtigt werden) oder **public** (für alle zugänglich) sein. | + | Beachte, dass ein GitHub-Repository kann entweder **private** (nur für Author zugänglich und Leute, die explizit dazu berechtigt werden) oder **public** (für alle zugänglich) sein. |
Typische **Verwendungszwecke** von GitHub: | Typische **Verwendungszwecke** von GitHub: | ||
Zeile 160: | Zeile 164: | ||
{{: | {{: | ||
- | === - Account === | + | ==== - Account |
- | Erstelle einen Account auf GitHub: < | + | Erstelle einen Account auf GitHub: < |
- | Du hast nun zwei Möglichkeiten, | + | ==== - Neues GitHub-Repository anlegen ==== |
- | ### Repository | + | Gehe auf die http:// |
- | + | ||
- | Am einfachsten ist es, wenn du auf GitHub | + | |
- | + | ||
- | Clicke | + | |
* auf Englisch | * auf Englisch | ||
Zeile 176: | Zeile 176: | ||
* keine Leerzeichen (verwende Underlines _) | * keine Leerzeichen (verwende Underlines _) | ||
- | Gib an, ob das Repo *private* oder *public* sein soll. | + | Gib an, ob das Repo *private* oder *public* sein soll. In den meisten Fällen solltest du *private* wählen. |
Füge ein passendes Gitignore-File hinzu. Wàhle die Programmiersprache deines Projekts. | Füge ein passendes Gitignore-File hinzu. Wàhle die Programmiersprache deines Projekts. | ||
Zeile 185: | Zeile 185: | ||
**Klone** das Repo nun auf deinen Computer. | **Klone** das Repo nun auf deinen Computer. | ||
Hast du auf GitHub das Repo geöffnet, so kannst du unter *Clone or download* den Link zum Repo kopieren | Hast du auf GitHub das Repo geöffnet, so kannst du unter *Clone or download* den Link zum Repo kopieren | ||
- | ```bash | + | < |
git clone https:// | git clone https:// | ||
- | ``` | + | </ |
- | === - Repository lokal erstellen | + | ==== - Mit GitHub arbeiten ==== |
- | Alternativ kannst | + | Hast du lokal auf deinem |
+ | <code bash> | ||
+ | git push | ||
+ | </ | ||
+ | Gehe nun auf GitHub und vergewissere dich, dass alles geklappt hat. | ||
- | Erstelle zuerst auf GitHub ein neues Repository. | + | Hat in der Zwischenzeit deine Kollegin ins gleiche |
+ | <code bash> | ||
+ | git pull | ||
+ | </ | ||
+ | Git versucht nun, deine Änderungen mit denjenigen deiner Kollegin zu verbinden - zu **mergen**. Habt ihr unterschiedliche Files oder das gleiche File an unterschiedlichen Stellen bearbeitet, so sollte dies zu keinen Problemen führen. Habt ihr aber identische Stellen im gleichen File bearbeitet, so führt dies zu einem **merge conflict** | ||
- | Nun musst du das lokale Repo mit dem leeren auf Repo auf GitHub verbinden: | + | Zusammengefasst |
- | ```bash | + | |
- | git remote add origin https:// | + | |
- | ``` | + | |
- | Das Repo auf GitHub wird das **remote Repository** genannt (remote = entfernt). Das (oder die) remote Repository eines Projekts kann man anzeigen mit | + | |
- | ```bash | + | |
- | git remote -v | + | |
- | ``` | + | |
- | Nun können | + | |
- | ```bash | + | |
- | git push origin master | + | |
- | ``` | + | |
- | Möchte man ein **remote Repository entfernen**, | + | < |
- | ```bash | + | # Übersicht verschaffen über Status des Repositorys |
- | git remote rm origin | + | git status |
- | ``` | + | |
- | === - Mit GitHub arbeiten === | + | # Neue Files hinzufügen |
+ | git add ... | ||
- | Hast du lokal auf deinem Computer Änderungen vorgenommen und diese committed (siehe [Mit Git arbeiten](Mit_Git_arbeiten)), | + | # Change committen: |
- | ```bash | + | git commit -am " |
+ | |||
+ | # Auf GitHub pushen | ||
git push | git push | ||
- | ``` | + | </ |
- | Gehe nun auf GitHub und vergewissere dich, dass alles geklappt | + | Falls beim Pushen die Meldung kommt, dass bereits jemand vor dir gepushed |
+ | <code bash> | ||
+ | # aktuellste Version herunter pullen | ||
+ | git pull | ||
- | === - Kollaborationen ==== | + | # löse merge conflicts, falls es welche gibt |
+ | |||
+ | # Change committen: | ||
+ | git commit -am " | ||
+ | |||
+ | # Auf GitHub pushen | ||
+ | git push | ||
+ | </ | ||
+ | |||
+ | ==== - Kollaborationen ==== | ||
Du kannst ein privates Repo für andere GitHub-Benutzer freigeben, damit diese mit dir an diesem Arbeiten können. | Du kannst ein privates Repo für andere GitHub-Benutzer freigeben, damit diese mit dir an diesem Arbeiten können. | ||
Zeile 228: | Zeile 239: | ||
Mit einem gratis Account von GitHub kannst du bis zu drei Collaborators zu einem Repo hinzufügen. | Mit einem gratis Account von GitHub kannst du bis zu drei Collaborators zu einem Repo hinzufügen. | ||
- | === - Diff === | + | ==== - Diff ==== |
- | In der Git Bash können | + | Mit dem folgenden Befehl werden die sämtliche Änderungen seit dem letzten Commit angezeigt: |
- | ```bash | + | <code bash> |
- | diff file1 file2 | + | git diff HEAD |
- | ``` | + | </ |
+ | Das Keyword HEAD ist ein Zeiger auf den letzten Commit. | ||
+ | |||
+ | Oft ist es auch nützlich, | ||
+ | <code bash> | ||
+ | git log | ||
+ | </ | ||
+ | Falls es sich um ein GitHub-Repository handelt, kannst du die Commit-Nummern auch dort nachschlagen. Kopiere dir die Nummern der zu vergleichenden Commits heraus. Tatsächlich reicht es, wenn man die ersten paar Ziffern der Nummer nimmt. | ||
+ | Die Unterschiede anzeigen kannst du nun wie folgt: | ||
+ | < | ||
+ | git diff commitnumber1 commitnumber2 | ||
+ | </ | ||
+ | Interessiert dich nur, welche Files überhaupt verändert wurden, so füge die Option | ||
+ | <code bash> | ||
+ | git diff commitnumber1 commitnumber2 --name-only | ||
+ | </ | ||
+ | Weitere Infos zu diesem Thema findest du hier: https:// | ||
+ | |||
+ | |||
+ | ==== - Weitere GitHub Dinge ==== | ||
+ | |||
+ | Mit den oben beschriebenen Schritten sollten die meisten deiner GitHub Wünsche abgedeckt sein. Falls nicht, findest du in diesem Kapitel weitere Tipps. | ||
+ | |||
+ | === - Repository lokal erstellen === | ||
+ | |||
+ | Oben haben wir gesehen, wie man auf GitHub ein neues Repository erstellen und es dann auf den eigenen Computer klonen kann. | ||
+ | Alternativ (aber etwas umständlicher) kannst du ein bereits auf deinem deinem Rechner vorhandenes Projekt, welches du mit Git verwaltest, auf GitHub pushen. | ||
+ | |||
+ | Erstelle zuerst auf GitHub ein neues Repository. Üblicherweise hat dieses den gleichen Namen wie der Ordner deines Projekte (ist aber kein Muss). Wähle kein Gitignore-File und wähle die Option *Initialize this repository with a README* nicht an. | ||
+ | |||
+ | Nun musst du das lokale Repo mit dem leeren auf Repo auf GitHub verbinden: | ||
+ | <code bash> | ||
+ | git remote add origin https:// | ||
+ | </ | ||
+ | Das Repo auf GitHub wird das **remote Repository** genannt (remote = entfernt). Das (oder die) remote Repository eines Projekts kann man anzeigen mit | ||
+ | <code bash> | ||
+ | git remote -v | ||
+ | </ | ||
+ | Nun können die Daten auf GitHub gepushed werden: | ||
+ | <code bash> | ||
+ | git push origin master | ||
+ | </ | ||
+ | Möchte man ein **remote Repository entfernen**, | ||
+ | <code bash> | ||
+ | git remote rm origin | ||
+ | </ | ||
=== - Branches === | === - Branches === | ||
Zeile 239: | Zeile 295: | ||
TODO | TODO | ||
- | ==== - Alternativen zu GitHub | + | === - Alternativen zu GitHub === |
Es gibt andere Dienste, die in etwa das Gleiche anbieten wie GitHub, wie z.B. *Bitbucket*. | Es gibt andere Dienste, die in etwa das Gleiche anbieten wie GitHub, wie z.B. *Bitbucket*. | ||
- | ==== - Git-Clients | + | === - Git-Clients === |
Git-Clients sind Programme mit graphischen Oberflächen, | Git-Clients sind Programme mit graphischen Oberflächen, | ||