Git
Git Grundbefehle
Git-Projekt aufsetzen
Mittels Terminal in das entsprechende Verzeichnis navigieren, in dem das entsprechende Projekt liegt. Danach mit git init
ein neues Git-Repository anlegen. Falls bereits ein lokales / entferntes Git-Repository besteht, kann es in das entsprechende Verzeichnis mittels git clone ...
kopiert werden. Entweder kann dazu die URL oder SSH verwendet werden.
Remote Repositories
Generell sind alle Repositories die nicht lokal sind, als Remote Repositories bezeichnet. Das geklonte Repository heisst origin. Mit git remote add name url
wird ein Repository von url mit name hinzugefügt. Mittels git remote
können alle bekanntgemachten Repos angezeigt werden.
Um ein lokales Repo mit einem entfernten Repo bekannt zu machen, kann der Befehl git remote add origin https://gitExample.com/user/repository.git
verwendet werden.
Änderungen hochladen
- Geänderte Datei zum Staging hinzufügen:
git add datei
odergit add *
. - Commit aller Dateien aus dem Stage:
git commit -m "Commit Nachricht"
. - Commits zum Repo pushen:
git push
.
Bei Pushen wird standardmässig der Master-Branch gepusht. Wenn ein Repo von mehreren Personen verwaltet wird, ist es sinnvoll mit Branches zu arbeiten. Diese können unabhängig abgeändert und am Ende wieder mit dem Master gemerged werden.
Suchen im Repository
Der Befehl git log --oneline
zeigt eine Übersicht aller Snapshots mit Hash-Wert und Kurzkommentar an. Mit git log --name-only
werden nur die geänderten Dateien angezeigt und mit git log --name-only --oneline --graph
das Ganz übersichtlich und grafisch dargestellt.
Daten wiederherstellen
Um Daten wiederherzustellen gibt es verschiedene Ansätze:
- Mit
git checkout <snapshot>
wird das Arbeitsverzeichnis auf einen älteren Snapshot gewechselt. Danach können die betroffenen Dateien kopiert werden. Mitgit checkout master
wird wieder in den Main-Branch gewechselt und die kopierten Daten können hinzugefügt werden. - Mit
git reset --hard <snapshot>
kann bis zum entsprechenden Snapshot alles "zurückgestellt" werden, d.h. alle Änderungen werden unwiederruflich zurückgesetzt. - Mit
git revert <snapshot>
können die Änderungen, die mit dem entsprechenden Snapshot eingeflossen sind, wieder rückgängig gemacht werden. Die nachfolgenden Änderungen werden nicht angetastet. Schwierig wird es, wenn Dateien bei späteren Snapshots nochmals geändert wurden. Dann erscheinen Merge-Fehlermeldungen.
Branching
- Mit
git checkout -b feature
wird ein feature-Branch erstellt und das Repo automatisch darauf gewechselt. Besteht der Branch bereits, kann mitgit checkout feature
darauf gewechselt werden. Sämtliche Änderungen an diesem Branch können wie oben beschrieben vorgenommen werden. Um einen lokalen Branch auf das entfernte Repo zu pushen, kann der Befehlgit push origin feature
verwendet werden. - Mittels
git checkout master
und danachgit merge feature
können die Änderungen aus dem Feature-Branch in den Master gemergt werden. Um einen nicht mehr benötigten Branch zu löschen kanngit branch -d feature
abgesetzt werden.
Lokales Repository aktualisieren
- Änderungen vom Repo herunterladen:
git fetch
und mitgit merge
die Änderungen mergen. Mittelsgit pull
können beide Befehle gleichzeitig ausgeführt werden. - Mögliche Merge-Konflikte müssen von Hand korrigiert werden.
Zusätzliche Befehle
Nutzerinformationen anpassen
git config --global user.name "Max Muster"
git config --global user.email "max@muster.ch"
Github
SSH-Verbindung
Um mittels SSH auf Github zugreifen zu können, muss zuerst ein SSH-Schlüsselpaar generiert werden. Der Public-Key wird danach dem Github-Account und der Private-Key dem lokalen SSH-Agenten hinzugefügt.
Neuen SSH-Key generieren
In der Bash mittels $ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
ein neues Schlüsselpaar generieren
Public-Key Github Account hinzufügen
In den Einstellungen des eigenen Github-Accounts unter SSH-Keys den Public-Key hinzufügen.
Private-Key dem SSH-Agenten hinzufügen
Mittels eval $(ssh-agent -s)
überprüfen, ob eine PID ausgegeben wird und damit der SSH-Agent läuft. Danach über ssh-add ~/.ssh/id_rsa
den Private-Key dem SSH-Agenten hinzufügen. Dazu muss das entsprechende Passwort eingegeben werden (wenn der private Schlüssel mittels Passwort geschützt ist).
Um bereits beim Start der Bash den Private-Key dem SSH-Agenten hinzuzufügen, kann beim Start der Bash folgendes hinzugefügt werden...
!Todo