Im ersten Teil dieser Anleitung wurde gezeigt wie man den Git Server einrichtet und Git for Windows an den Git Server anschließt. In diesem Teil wird gezeigt wie man ein neues Repository anlegt, es auf den Server überträgt und beide mit einander verbindet.

Alle Teile dieser Artikel Serie

Lokales Repository erstellen in der Git Bash

$ cd x
$ cd /www/
$ mkdir projectname
$ cd projectname
$ git init
Initialized empty Git repository in /www/projectname/.git/

Wenn man seine Git Config noch nicht angepasst hat, dann sollte man dies nun machen. Um die aktuelle Config zu sehen reicht ein "git config --list" aus. Es sollte mindestens der user.name und die user.email gesetzt sein.

$ git config --global user.name "kostaki"
$ git config --global user.email kostaki@gmx.net

Arbeitet man für unterschiedliche Firmen oder möchte unterschiedliche E-Mail Adressen benutzen, kann man die Config auch nur für das aktuelle Repo anpassen.

$ git config --local user.name "Marco"
$ git config --local user.email marcosemail@firma.de

Jetzt kann man seine Projekt Dateien in den Git Projektordner kopieren und wenn nötig eine .gitignore anlegen für Dateien die nicht von Git getrackt werden sollen.

.gitignore erstellen: Wie man Temp Verzeichnisse behandelt

In Webprojekten hat man oft Temp Verzeichnisse. Die Inhalte dieser möchte man natürlich nicht in seinem Repository haben, aber die Verzeichnisse sollen trotzdem angelegt werden wenn man einen neuen Clone anlegt. Dies kann man mit den folgenden Zeilen in der .gitignore bewerkstelligen.

# tmp verzeichnisse
app/tmp/smarty/compile/*
app/tmp/cache/*
!.gitignore

Das /* am Ende bewirkt das nur Dateien in den Verzeichnissen ignoriert werden und nicht das Verzeichnis an sich. Da Git aber keine leeren Verzeichnisse tracken kann, legt man eine leere .gitignore in die Verzeichnisse und die letzte Zeile !.gitignore ist eine Ausnahme für diese Dateien. Die .gitignore in den Temp Verzeichnissen werden also zum Repo hinzugefügt und damit wird bei einem neuen Clone das Verzeichnis angelegt. Tipp: Wenn man Funktionen hat die Temp Verzeichnisse leeren, sollte man hier eine Ausnahme für .gitignore Dateien hinzufügen. :)

Der erste Commit (Initial commit)

Jetzt werden alle Dateien zum Git Index hinzugefügt und der erste Commit durchgeführt.

$ git add .
$ git commit -m "Initial commit"

Damit hat man nun ein lokales Repository mit dem man arbeiten kann. Im nächsten Schritt wird dies auf den Server übertragen.

Git Repository auf den Git Server kopieren und anbinden

In der Git Bash wird nun ein Clone des Repositories angelegt. Das muss nur ein bare Clone sein, da dieser auf den Git Server kopieren werden soll und dort nur der .git Ordner gebraucht wird (nicht die Dateien an sich). Im Git FAQ steht außerdem das man nur in bare Clone pushen soll, außer man weiß was man tut. Dazu später mehr.

A quick rule of thumb is to never push into a repository that has a work tree attached to it, until you know what you are doing.

Hat man den bare Clone erstellt, kann man ihn per SCP auf den Git Server kopieren. Den Clone kann man nach dem übertragen löschen.

$ cd ..
$ pwd
/x/www
$ git clone --bare projectname/.git projectname.git
$ scp -P 12345 -r projectname.git \
mygituser@server.com:/home/mygituser/repos/
$ rm -rf projectname.git

Als nächstes wird dem lokalen Repository ein neues Remote Repository hinzugefügt.

# anlegen eines neuen remote repos, git remote add <name> <url>
$ git remote add origin \
ssh://mygituser@myserver.com:12345/home/mygituser/repos/projectname.git

# löschen eines eingetragenen remote repos, git remote rm <name>
$ git remote rm origin

# anzeigen welche remote repos eingetragen sind
$ git remote

Man kann die .git/config auch mit einem Editor von Hand bearbeiten, wenn man weiß was man tut. Nun kann man aus dem lokalen Repository heraus nach Origin pushen oder Änderungen von dort pullen.

$ git pull origin master
$ git push origin master

Damit man den Namen und den Branch nicht bei jedem push/pull angeben muss, kann man seine Standards in die git config eintragen. Dann reicht ein einfaches "git push" bzw. "git pull".

$ git config branch.master.remote origin
$ git config branch.master.merge refs/heads/master
$ git pull
$ git push

PhpStorm, Git und ein Remote Webserver

Im nächsten Artikel gehe ich dann auf die Integrierung des Git Repositories in PhpStorm ein und die Anbindung des Remote Testservers: PhpStorm, Git und ein Remote Webserver

One Response to “Git Repository erstellen und mit den Git Server verbinden”

Leave a Reply