Git im CS-Netz
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.
Inhaltsverzeichnis
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