# Git Ein Version-Control-System (VCS). Git funktioniert als verteiltes System. Jeder Entwickler hat seine eigene Version des Quellcodes auf dem Rechner, den er nach Bedarf mit anderen Entwicklern synchronisieren kann. --- ## Idee Als Entwickler besteht die Arbeit darin Dateien zu verändern. Also eine Datei verändern und dann abspeichern, wieder und wieder. Häufig ist es wichtig eine Historie dieser Änderungen zu haben. In einem Umfeld mit vielen Entwicklern sollten die Änderungen anderen zur Verfügung gestellt werden. In Git werden die Änderungen an Dateien in sogenannten `commits` festgeschrieben. Diese enthalten den Namen des Authors, eine kurze Beschreibung der Änderungen und die Änderungen an sich. Diese `commits` lassen sich dann zwischen Entwicklern austauschen. --- ## Repository Ein Ordner der unter der Versionsverwaltung von Git steht. Das ist zu erkennen an einem Unterordner `.git`. ![80%](https://git.henriburau.de/tutorien/programmieren-1/-/raw/master/img/git-folder.png) --- ## Remote-Repositories Repositories die nicht auf dem eigenen Rechner sondern im Internet liegen. Ein häufig verwendeter Workflow, der `Centralized Workflow`, von Git beinhaltet das Benutzen von einem zentralen Remote-Repository. Dafür gibt es viele Anbieter, wie Github, Gitlab, Bitbucket und Gitea. Entwickler tauschen dann `commits` nicht untereinander aus, sondern synchronisieren sich mit dem zentralen Repository. An der HAW haben wir einen eigenen Server für Git-Repositories [git.haw-hamburg.de](https://git.haw-hamburg.de). --- ## Git installieren Für alle Betriebssysteme gibt es eine Downloadmöglichkeit auf der offiziellen Homepage des Gitprojekts: [git-scm.com](https://git-scm.com) ## Git benutzen Allen Anfängern wird es empfohlen Git über die sogenannte `Git-bash` zu benutzen. Das Aufrufen des Programms geschieht über die Kommandozeile. Erst nachdem die Kommandos von Git verstanden wurden kann auch eine GUI verwendet werden. --- ## Schäfers Anleitung Folgende Kommandos sollen eine einfache Benutzung von Git ermöglichen, auch ohne die Konzepte zu verstehen: git add -A git commit –m "Notiz" git checkout master git pull –-tags origin master git merge dev git add -A git commit –m "Notiz" git push –-tags –u origin master git checkout dev git merge master