Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

Git im CS-Netz

Version vom 1. August 2010, 16:37 Uhr von Jörg F (Diskussion | Beiträge) (hat „Git“ nach „Git im CS-Netz“ verschoben: Ordnung im Wiki)

Dieser Artikel beschreibt wie man die Versionskontrolle namens Git im cs-Netz einrichtet und für weitere User bereitstellt. Es werden grundlegende Unix-Kenntnisse vorausgesetzt.

Git Software einbinden

Git ist auf den cs-Rechnern in /opt/csw/bin verfügbar und erfordert die Anpassung der PATH Variablen (z.B. PATH="/opt/csw/bin":$PATH ) Falls dies nicht mehr der Fall sein sollte, kann Git in das Home-Verzeichnis installiert werden.

Remote Repository erstellen

Um ein Remote Repository names foo im Home-Verzeichnis auf einem cs-Rechner zu erstellen, wird ein Git-Verzeichnis (Konvention: Suffix git) erstellt und initialisiert:

mkdir foo.git && cd foo.git
git init --bare

Anschließend können eine Gruppe erstellt, die Benutzerrechte angepasst und andere User in die Gruppe eingeladen werden. (TODO: genauere Anleitung).

Administrator: Erste Schritte

Der folgende Abschnitt wird auf dem Rechner des Administrators ausgeführt. Das gerade erstellte Git Repository kann nun mit Inhalt gefüllt werden. User und remotehost müssen durch den cs-usernamen bzw. einen cs-Rechner ersetzt werden.

mkdir foo && cd foo
git init
...
git add .
git commit -a -m "Initial commit"
git push ssh://user@remotehost/home/user/foo.git master

Somit ist das remote Repository eingerichtet und der aktuelle Branch ist master (head).

User

Erste Schritte

Als erstes wird eine Kopie des Repositorys erstellt:

git clone ssh://user@remotehost/home/user/foo.git

Anschließend kann man die Konfigurations-Datei .git/config ändern, um kürzere Befehle benutzen zu können. Die Datei sollte so aussehen:

[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
[remote "origin"]
	url = ssh://user@remotehost/home/user/foo.git
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
	remote = origin
	merge = refs/heads/master
[user]
	name = user
	email = user@example.com

Arbeiten mit dem Git-Repo

Holt die Änderungen des Remote Repositorys:

git pull

Sendet die Veränderungen an das Remote Repository:

git push

Zeigt den Commit-Log an

git log

Zeigt noch nicht gespeicherte Änderungen an:

git diff

Links

http://git-scm.com