Git lässt sich mit allen 1&1 WebHosting Paketen mit SSH Zugang nutzen und ist bereits vorinstalliert. Es gibt zwar schon einige Tutorials zu diesem Thema, ich möchte euch an dieser Stelle ein sehr einfaches vorgehen zeigen. Ziel soll eine neue Website sein deren Inhalte via Git mit dem Lokalen Git Repository synkronisiert werden können.
Szenario
Was wollen wir genau erreichen? Nehmen wir mal an wir wollen lokal eine Website entwickeln und diese dann mit dem Webserver abgleichen. Der Abgleich soll sowohl von lokalen System zu Webserver wie auch umgekehrt funktionieren. Statt FTP soll hierfür Git eingesetzt werden. Bis zum jetzigen Zeitpunkt haben wir noch keinen Source erstellt. Da unser Rechner nicht vom Webspace aus zu erreichen ist, benutzen wir ein Remote Git Repository bei einem Dienstleister wie Bitbucket oder Github.
Was wir brauchen
Um Git nutzen zu können brauchen wir Git lokal (dazu später mehr) auf unserem Rechner, ein remote Repositorie z.B. bei Bitbucket, ein Programm mit dem wir SSH Verbindungen aufbauen können (z.B. Putty) und natürlich ein 1&1 WebHosting Paketen mit SSH Zugang.
Da ich nicht weis was für ein Betriebsystem und welche Software ihr benutzt halte ich diesen Bereich sehr allgemein und beschränke mich auf die Server seitige Beschreibung. Diese gilt sicher nicht nur für 1&1 sondern in ähnlicher form auch für andere Webhoster oder Server mit installiertem Git. Grundlegende Kenntnisse in Git und euren Anwendungen braucht es natürlich auch. Eine einfache Git Anleitung findet ihr hier bzw. „Got 15 minutes and want to learn Git?“
Vorbereitungen
- Als erstes legen wir das Remote Git Repository an. Es bleibt erst mal leer. Ihr müsst hierzu natürlich erst mal bei dem Dienstleister ein Benutzerkonto anlegen und eich dort einloggen. Wie ihr dort ein Repository über die Weboberfläche anlegt erfährt ihr aus den Anleitungendes Dienstleisters.
- Wenn das Repository angelegt ist, könnt ihr eventuell auf der Website ein Konsolen-Befehl finden der in etwa so aussieht: git clone https://BENUTZERNAME@bitbucket.org/BENUTZERNAME/REPOSITORYNAME.git
Bei Bitbucket ist dieser in der Ansicht Repository unter Klonen zu finden. Diesen Befehl brauchen wir gleich auf der Konsole eures Webspace. Haltet ihn deshalb bereit. - Als nächtes loggen wir uns per SSH auf dem Webspace ein. Normalerweise würden hier die Dateien unserer Website liegen. In dieses Verzeichnis können wir das Repository aber nicht direkt klonen. Deshalb Klonen wir in ein Unterverzeichnis, das noch nicht existiert, mit dem folgenden Befehl:
git clone https://BENUTZERNAME@bitbucket.org/BENUTZERNAME/REPOSITORYNAME.git VERZEICHNISNAME
Gebt euer Passwort ein wenn ihr danach gefragt werdet.
Git legt für uns das Verzeichnis an. In diesem legt Git nun ein lokales Repository samt Konfiguration an und lädt die Dateien aus dem Repository. Da unser Remote Repository noch leer ist, wird natürlich nichts geladen. Im Anschluss findet ihr in dem neu angelegten Verzeichnis lediglich ein verstecktes Verzeichnis mit dem Namen .git - Nun kommt unser lokaler Rechner an die Reihe. Lokal haben wir mehrere Wege. Wir können Git lokal installieren und dann auf der Konsole bedienen, ein Programm mit grafischer Öberfläche für Git (z.B. Sourcetree usw.) oder eine Entwicklungsumgebung die Git nutzt. Ich verwende eine Kombination aus der IDE Netbeans und Sourcetree. Auch hier wird nun das Remote Repository in ein Verzeichnis geklont.
Das waren grob schon die ganzen Vorbereitungen. Jetzt geht es ans einrichten der Website.
Website einrichten
Wenn das lokale Repository eingerichtet ist können in dem lokal angelegten Verzeichnis die Website einrichten sprich die benötigten Dateien hier hin kopieren. Dies können auch die Dateien eines CMS sein.
Tipp: kopiert die Dateien besser nicht direkt in das Verzeichnis sondern in ein Unterverzeichnis. Wenn ihr z.B. das Repository in …/entwicklung/WEBSITENAME/ geklont habt so habt dort auch das .git Verzeichnis. Da via Git auf dem Server die selbe Verzeichnisstrucktur entsteht, könnten eventuel Git Dateien auf euren Server aufgerufen werden. Wenn ihr die Website jedoch in einem Unterverzeichnis anlegt und den Server dann so konfiguriert das diese Verzeichnis das Hauptverzeichnis (Document Root) eurer Domain ist, so kann auf diese Dateien nicht mehr zugegrifen werden.
Das Verzeichnis für die Website könnt ihr ja z.B. nach dem CMS benennen das ihr benutzen wollt. Hier mal ein Beispiel mit verschiedenen CMS.
... /entwicklung/WEBSITENAME/
... /entwicklung/WEBSITENAME/.git/ ...
... /entwicklung/WEBSITENAME/wordpress/ ...
... /entwicklung/WEBSITENAME/joomla
... /entwicklung/WEBSITENAME/readme.txt
... /entwicklung/WEBSITENAME/.gitignore
... /entwicklung/WEBSITENAME/.htaccess
... /entwicklung/WEBSITENAME/typo3_src-x.x.x
... /entwicklung/WEBSITENAME/typo3_website/ ...
Ihr könnt also noch weitere Verzeichnise und Dateien anlegen die dann mir Git synkronisiert werden, aber nicht mit dem Browser aufgerufen werden können.
Wichtig! Sollange ihr nicht mit einer .gitignore Datei, Dateien oder Verzeichnisse von Git ausschließt, werden alle lokalen Änderungen über das Remote Repository auf den Server übertragen und umgekehrt. Das bereitet insbesondere bei Konigurations und dynamisch erzeugten Dateien für Probleme wenn ihr auch einen lokalen Weserver zum testen betreibt. Beim Abgleich werden Dateien geändert, gelöscht oder umbenannt, je nachdem was ihr auf der anderen Seite gemacht habt.
Website per Git übertragen
Nehmen wir mal an, wir haben lokal alles fertig und die Website soll auf den Webspace. Hierzu müsst ihr lokal erst mal alles Commiten. Nach getaner Arbeit immer eine gute Idee 😉
Als nächstes müsst ihr einen Push zum Remote Repository durchführen. Logt euch nun per ssh auf eurem Webspace ein und wechselt in das Verzeichnis das durch das Klonen angelegt wurde. Auf der Konsole gebt ihr nun den folgenden Befehl ein und danach euer Passwort.
git pull --rebase
Hinweis: Solltet ihr ein Verbindungsfehler angezeigt bekommen könnte dies daran liegen, dass ihr euer Passwort falsch eingegeben habt.
Jetz müsst ihr in der Verwaltung eures Webspace das Hauptverzeichnis eurer Domain auf das Verzeichnis mit den Dateien eurer Wedbite setzen und ihr könnt die Website aufrufen.
Website per Git synkronisieren
Wenn die Website funktioniert und ihr zum Beispiel ein CMS installiert habt, so könnt ihr den Zustand der Website via Remote Repository auf euren Rechner übertragen. Der Ablauf ist von nun an immer der selbe.
Webspace und Remote Repository
- Einloggen auf dem Webspace
- Wechsel in das Verzeichnis mit dem Webserver Repository
- Prüfen mit „git status“ ob sich an den Dateien auf dem Server was geändert hat
- Falls Änderungen gemeldet werden, diese mit „git add -A“ zum Git Index hinzufügen.
- Änderungen mit git ‚commit -m „Kommentar“‚ ins Repository Comiten. Ein Kommentar zum Commit ist Pficht.
- Pullen eventuelle bereitstehender Commits aus dem Remote Repository.
- Pushen der Commits vom Webspace zum Remote Repository.
Hier noch mal die Befehle.
git status git add -A git commit -m "Server: <Notiz>" git pull --rebase git push
Remote Repository und lokaler Rechner
Auf eurem Rechner macht ihr nun genau das selbe.
- Lokal commiten falls ihr etwas verändert habt.
- Pull vom Remote Repository.
- Push ins Remote Repository.
- Aktualisieren auf dem Webspace.
Die Aktualisierung auf dem Webspace braucht ihr nur zu machen wenn ihr lokal was geändert habt.
Wenn ihr euch immer an den beschriebenen Ablauf haltet solltet ihr eigentlich keine Probleme bekommen.