Remote Repositories mit GIT einrichten

Da ich mich beruflich aktuell sehr intensiv mit der Verwendung von GIT beschäftige, möchte ich hier (nicht zuletzt für mich selbst) einige Informationen bereitstellen.

Das hier soll keine allgemeine Einführung in GIT werden, sondern hier möchte ich gerne einige Best-Practices dokumentieren, und den Artikel Schritt für Schritt um interessante Informationen erweitern.

Remote Repositories einrichten

Zunächst möchte in demonstrieren, wie man ein Remote Repository mit GIT einrichten kann. Ich verwende hierzu einen Rechner im lokalen Netzwerk (192.168.178.1).

Das Repository richte ich ein im Verzeichnis : /home/user/development/git/repo mit git init –bare (durch das Bare wird die ganze „Noise“ aus dem Repository ferngehalten, das ist also kein Repo mehr, mit dem man arbeiten kann, sondern hier liegen nur die „rohen“ Git Informationen.)

Der einfachste Weg, auf ein solches Repository zuzugreifen ist über SSH (das git-protokoll soll hierfür zwar besser sein, aber praxisrelevanter ist aus meiner Sicht SSH).

Die Adresse, mit der auf das REPO zugegriffen wird wäre dann:

ssh://user@192.168.178.1/home/user/development/git/repo

Ok, zunächst pushen wir was ins REPO, damit wir was zum auschecken haben (leere Repos auschecken funktioniert nicht).

git remote add origin ssh://user@192.168.178.1/home/user/development/git/repo
(hiermit legen wir einen Namen für das Repo fest, damit wir nicht immer die URL eingeben müssen)

mkdir ~/tmp
cd ~/tmp
git init // initialisiert ein leeres git repo
echo „hallo welt“ >> file //irgendwelchen content anlegen
git add . //content stagen
git commit -m „Intitial Commit“

Ok, jetzt haben wir ein funktionierendes Repo mit Content, jetzt pushen wir auf den Server

git push origin master:master

Damit liegt der Content auf dem „Server“. Die Syntax ist hierbei folgende:

git push origin (also wohin gepusht wird) master (von welchem branch gepusht wird) : master (auf welchen branch in Remote gepusht wird)

Hier kann auch ein komplett neuer Remote-Branch angelegt werden, indem master:neuerBranchName verwendet wird.

Zum Testen holen wir uns gleich mal den Content in ein anderes lokales Repository.

mkdir ~/home/tmp2
cd ~/home/tmp2
git init
git clone ssh://user@192.168.178.1/home/user/development/git/repo

Auschecken von Remote Branches

git clone ssh://user@192.168.178.1/home/user/development/git/repo

Damit checken wir den aktuellen HEAD aus (also quasi den Branch, auf dem das Remote Repository aktuell steht).
Alle Branches im Remote REpository kann man sich mit git branch -r anschauen.
origin/HEAD -> origin/master
origin/master
origin/testbranch1
origin/testbranch2

Wichtig, clone checkt wirklich das komplette Repository inklusive aller Branches aus, wir können aber nicht direkt auf den Branches arbeiten. Will man im obigen Beispiel auf dem Branch origin/testbranch1 arbeiten, so muss man diesen erst in einen Remote-Tracking-Branch auschecken mit

git checkout -b testbranch1 origin/testbranch1 –track origin/testbranch1

Hat man jetzt mit git clone ein Repository gecloned, dann werden alle Branches getrackt. Ein Update für alle Branches bekommen wir mit einem einfachen git fetch. (Git weiß, welche Branches für welche Remote Repositories getracked werden, indem es die entsprechenden Repos in .git/config unter dem Remote-Namen speichert.)

Eine Frage die mir immer noch nich ganz klar ist, ist wie man jetzt seine lokalen GIT-Branches mit dem Master in sync hält (der Master ist immer auf den SVN-Trunk gerebased), nimmt man jetzt merge, pull, rebase? funktionieren tut alles, aber was ist der richtige weg? Für Tipps hierfür wäre ich dankbar.

Seid ihr interessiert, mehr über GIT zu erfahren? Seid ihr mit eurer Firma in oder um München? Ich würde mich freuen, einen Tech Talk zum Thema GIT bei euch abzuhalten. Setzt euch am besten einfach mit mir in Verbindung. Das Ganze ist kostenlos bis auf das Bier danach und dauert ungefähr zwei Stunden.

Für die allgemeinen Informationen nachfolgend einige interessante Links:

http://git.or.cz/course/svn.html
http://flavio.castelli.name/howto_use_git_with_svn
http://progit.org/book/ch8-1.html

http://blog.tsunanet.net/2007/07/learning-git-svn-in-5min.html
http://git.or.cz/gitwiki/GitFaqhttp://stackoverflow.com/questions/747075/how-to-git-svn-clone-the-last-n-revisions-from-a-subversion-repository
http://www.kernel.org/pub/software/scm/git/docs/git-branch.html
http://toolmantim.com/articles/setting_up_a_new_remote_git_repository
(sehr gut!!!) http://www.kernel.org/pub/software/scm/git/docs/user-manual.html
http://wiki.sourcemage.org/Git_Guide
http://www.vilain.net/talks/git-svn/intro.html#howto-fetch


War dieser Blogeintrag für Sie interessant? Evtl. kann ich noch mehr für Sie tun.

Trainings & Know-How aus der Praxis zu

  • Apache Wicket 1.4.x, 1.5.x, 1.6.x
  • GIT – Best Practices, Einsatz, Methoden
  • Spring
  • Java
  • Scrum & Kanban
  • Agiles Arbeiten
Consulting & Softwareentwicklung

  • Requirements Engineering
  • Qualitätssicherung
  • Software-Entwicklung
  • Architektur
  • Scrum & Kanban
Advertisements

5 Gedanken zu „Remote Repositories mit GIT einrichten

  1. gerhard

    Netter artikel. Für leute mit etwas erfahrung sehr gut. Neulinge schickst du allerdings ziemlich in die irre.
    z.b.:
    Das „git remote add origin …“ kannst du erst machen, NACHDEM du das lokale repository initailisert hast.
    Überhaupt unterscheidest du wenig, was auf der remote maschine und was am lokalen rechner geschieht…

    Antwort
  2. Pingback: Git mit normalem Webspace nutzen « Stefan Karg

  3. Clyde Vancampen

    Wow, marvelous blog layout! How long have you been blogging for? you make blogging look easy. The overall look of your website is magnificent, as well as the content!. Thanks For Your article about Remote Repositories mit GIT einrichten | Softwareentwicklung und Agiles Arbeiten .

    Antwort

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s