SSH
Das Repository laesst sich nur ueber eine SSH-Verbindung ansprechen. Dazu benoetigt man:
- GIT selbst
- SSH
Im einfachsten Fall ruft man einfach nur
Code: Alles auswählen
ssh-keygen
Code: Alles auswählen
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/s2/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/s2/.ssh/id_rsa.
Your public key has been saved in /home/s2/.ssh/id_rsa.pub.
The key fingerprint is:
ca:50:00:74:4b:84:39:2b:bf:11:4e:c9:85:5d:39:11 s2@terra
Habt ihr die Schluessel erzeugt, findet ihr in der Datei
Code: Alles auswählen
~/.ssh/id_rsa.pub
Windows: Ich nehme an, mit cygwin hat mans einfacher, da hier gleich ssh dabei ist
Installation
Okay, gesagt, getan. Der naechste Abschnitt gilt wieder gleichermassen fuer Linux und Windows, mit Ausnahme der Bezugsquellen. Auch MAc-Nutzer sollten keine Probleme haben, sich GIT zu besorgen
Linuxer installieren die Packete git-core sowie qgit oder gitk. letztere sind grafische Oberflaechen, die relativ einfach zu bedienen sind, der Hauptvorteil liegt darin, dass man sich die ganzen Aenderungen komfortabel ansehen kann.
Windows-Nutzer nehmen entweder msysgit, was vielfach empfohlen wird, oder installieren cygwin und damit dann git. Cygwin hat den Vorteil, dass man gleich alles dabei hat oder einfach nachinstallieren kann, was man zum komfortablen Arbeiten mit Dateien benoetigt (vim|emacs, grep...).
Cygwin setup.exe runterladen, starten, Auswaehlen von wo, wohin, und was. (git vor allem hier).
msysgit bringt eine eigene bash-shell mit und enthaellt nur GIT selbst.
Einrichten
So, nun muss GIT noch wissen, wie ihr heisst. Linux und BSD/Mac-Benutzer wissen hoffentlich, wie sie ein Terminal aufbekommen, WIndowsler finden selbiges je nach Installationsart unter msysgit oder cygwin.
Nun gibt es zwei Moeglichkeiten, die schnellste ist die Eingabe folgender zwei Befehle:
Code: Alles auswählen
git config --global user.name "Your Name"
git config --global user.email you@rz.oder.atis
Code: Alles auswählen
[color]
diff = auto
status = auto
branch = auto
[user]
name = Nukleus
email = rzkuerzel@stud.uni-karlsruhe.de
[github]
user = nukleus
token = somerandomtokenstring
[core]
excludesfile = /home/s2/.gitignore
Dolly, the cloned sheep
Nutzer anderer Versionsverwaltungen wie SVN werden das nun ein wenig komisch finden, aber in GIT wird das komplette Repository gecloned. Das bedeutet, dass jeder Nutzer die komplette History inklusive aller Aenderungen lokal hat. Das geschieht mit folgendem Befehl:
Code: Alles auswählen
git clone git@git.valouch.info:hm1script.git
GIT
Haben wir den Klon, koennten wir ja mal was committen, oder? Ab gehts
Man aendere etwas an den Files, ein "git diff" zeigt im Zweifel die Aenderungen, "git status" zeigt die veraenderten Dateien.
Jede Datei, deren Aenderungen man veroeffentlichen will, wird per "git add filename1 filename2 usw" hinzugefuegt. Damit fuegt man nicht nur neue Dateien dazu, sondern teilt GIT auch mit, wenn es Aenderungen an vorhandenen Dateien veroeffentlichen soll. Alle Aenderungen auf einmal kann man mit "git commit -a" hinzufuegen (vorsicht damit ).
Nun folgt ein "git commit". Nun oeffnet sich der voreingestellte Editor, bei mir ist das vim, das laesst sich aber umstellen. Hier schreibt man seine commit-message. Diese hat die folgende Form:
Code: Alles auswählen
eine kurze, maximal 50 Zeichen lange Kurzbeschreibung der Aenderungen (diese ist viel zu lange).
Ausfuehrliche Erlaeuterung der Aenderungen
# kommentare wie dieser werden nicht beachtet
# hier sind einige Informationen zu sehen, wie bspw. die Neuen und geaenderten Files
# oder der aktuelle Branch.
Okay, solche commits kann man immer und ueberall machen, da GIT nicht von einem Zentralserver abhaengt. Moechte man die Sachen nun auf den Server schieben, damit die anderen sie sich holen koennen, genuegt ein "git push". Nach eingabe des Schluesselpassworts werden die Daten hochgeschoben und sind fuer alle verfuegbar.
Abholen tun die anderen nun mit dem Befehl "git pull".
Hat man Sachen geaendert weigert sich GIT mitunter, zu committen oder zu pullen, diese Aenderungen kann man entweder hart rueckgaengig machen, indem man "git reset --hard HEAD" eingiebt, was aber ALLE, wirklich ALLE Aenderungen an den Dateien zuruecksetzt. Die bessere Methode ist der Aufruf von "git stash", was die Aenderungen auf einen Stack legt. mit "git stash apply" kann man sie wieder vom Stack holen.
Viel Holz wenn man sich damit noch nicht auskennt, bei Fragen hier rein, mich oder einen anderen GIT-Kenner anschreiben oder in den Chat (irc.euirc.net #uni-karlsruhe) kommen.
€dit: Anonymer ReadOnly Zugriff ist ueber folgenden Befehl moeglich:
Code: Alles auswählen
git clone git://git.valouch.info/hm1script.git