
Git Bash
Für eine einfache Übersicht mit allen Git-Commands kann man auch das Cheat-Sheet von Gitlab zu Rate ziehen. Abgesehen davon gibt es im Internet zahlreiche Ressourcen die viel mehr in Detail gehen als diese Seite oder das Cheat-Sheet.
Setup
git init
initialisiert den jetzigen Ordner als git Projektgit clone <project-link>
downloaden des Projektes
Das Format für diese Projekt-Links ist unterteilt in:
- HTTPS:
https://gitlab.com/gdw-trier/<group>/<project>.git
- SSH:
git@gitlab.com:gdw-trier/<group>/<project>.git
Die Authentifizierung bei HTTPS läuft über den Gitlab/Github Zugangsdaten, für SSH müssen sowohl auf dem Rechner als auch im Account ein Key hinterlegt werden. Um diesen Link zu generieren kann man ssh-keygen
nutzen. Diesen findet man danach als Private-Key im C:\Users\<user>\.ssh\id_rsa
und als Public-Key im C:\Users\<user>\.ssh\id_rsa.pub
. Um den Public-Key nun in Gitlab zu hinterlegen (Edit profile
-> SSH Keys
).
.gitignore und .gitattributes
2 der wichtigsten Dateien für den Arbeitsfluss mit Git sind die .gitignore
und die .gitattributes
Dateien. Diese sollten auch im ersten Commit mitangelegt werden, bevor das Unity/Unreal Projekt selbst initialisiert wird. Die .gitignore
sorgt dafür das nicht alle Dateien mit dem Server synchronisiert werden, sondern nur die Dateien die auch wichtig für andere sind.
Darunter zählen zum Beispiel:
- config Dateien für deine IDE der Wahl
- build Dateien, die beim Starten des Programms jedes mal neu erzeugt werden
- Werkzeuge und Abhängigkeiten, die nicht im Projekt gelagert werden sollen
- secrets wie API-Keys, die nicht für die Öffentlichkeit bestimmt sind
Für diesen Fall gibt es 2 Orte wo man nach einer vorgefertigten .gitignore suchen kann:
- https://github.com/github/gitignore, wobei hier die gedownloadete Datei (z.B.
Unity.gitignore
) in.gitignore
umgenannt werden muss - https://www.toptal.com/developers/gitignore, wo du dir den Content deiner
.gitignore
downloaden kannst
Die .gitattributes
Datei, gibt an wie mit bestimmten Daten gehandhabt werden soll, in Bezug auf mergen, Datei-Formate oder Zeilen-Endungen.
Eine Kollektion an nutzvollen Daten findet man z.B. auf https://github.com/alexkaratarakis/gitattributes. Auch hierbei muss die gedownloadete Datei (z.B. Unity.gitattributes
) in .gitattributes
umbenannt werden.
Git LFS
git lfs install
um Git Large File Storage zu nutzen, damit Große Dateien wie Texturen oder Models besser von Git gehandhabt werden.
Workflow
Wir empfehlen die Nutzung von Git-Fork über die Git-Bash aber die grundlegenden Features werden auch hier erklärt.
git status
um Informationen über den jetzigen Stand zu erfahren (z.B. jetziger Branch, staged und unstaged Dateien oder dein jetziger Stand im Vergleich zu dem Branch auf dem du arbeitest)git add <files>
fügt unstaged Dateien den staged Dateien hinzu, um sie danach mit einem commit zu bundlengit add -A
odergit add .
fügen alle Dateien hinzu
git commit -m "message"
fügt alle staged Dateien zum nächsten commit hinzu und hängt den commit am Ende deines momentanen lokalen Branches an.git fetch
holt sich die neusten Informationen über die Branches auf dem Server ohne irgendwelche Inhalte zu downloadengit pull
holt den neusten Stand vom Server in deinen lokalen Branch- merged auch automatisch alle Veränderungen die lokal als auch remote gemacht wurden
- wenn das automatisch nicht funktioniert entsteht ein merge Konflikt
git push
versucht deine Änderungen auf den Server zu updaten, dies funktioniert nur falls dein lokaler Branch weiter ist als der remote Branch.
Git-Fork Client
Die Standard Befehle die man in der GitBash nutzt sind auch gleichgenannt mit in Fork zu erreichen, man kann auch oben rechts jederzeit die Konsole öffnen oder sich in der Oben in der Mitte anzeigen lassen, welche Befehle nun welcher Knopfdruck verwendet hat.
- Initialisieren eines Projekts geht entweder über
File
->Init new Repository...
oder überFile
->Clone...
git <fetch|pull|push>
findet man oben links in der Main Leiste- Direkt darunter findet man 2 Ansichten (Local Changes und All Commits)
- Local Changes zeigt in einer Übersicht alle unstaged/staged Dateien und die Änderungen die man in denen getroffen hat. Außerdem hat man unten rechts die Möglichkeit die gestageden Dateien mit einem “Commit subject” (Commit-Message) zu commiten.
- All Commits zeigt die eine übersicht über alle Branches und Commits (+ deren Commit-Message, Author, Zeitpunkt etc.)