GIT HowTo

Projekt: inoffiziellen HM-Skript
Antworten
Nukleus
Beiträge: 27
Registriert: Mi 12. Nov 2008, 18:44

GIT HowTo

Beitrag von Nukleus »

Fangen wir mal mit einem kleinen HowTo an.

SSH
Das Repository laesst sich nur ueber eine SSH-Verbindung ansprechen. Dazu benoetigt man:
  • GIT selbst
  • SSH
Ganz am Anfang braucht man einen SSH-public key. Ich gehe hier von einem Linux-System aus, wie man das unter Windows alles regelt muss ich nachschauen.
Im einfachsten Fall ruft man einfach nur

Code: Alles auswählen

ssh-keygen
auf und laesst sich durch die Generierung weisen. Das gibt als Ausgabe:

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
Eventuell sieht die Ausgabe etwas anders aus. Das legt einen 2048-Bit Schluessel an.
Habt ihr die Schluessel erzeugt, findet ihr in der Datei

Code: Alles auswählen

~/.ssh/id_rsa.pub
euren persoenlichen, Rechnergebundenen, oeffentlichen SSH-Schluessel. Diesen, und nur diesen, sendet ihr mir. Die Datei id_rsa (ohne .pub) darf niemand ausser euch zu gesicht bekommen.

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
Die langsamere ist, die Datei ~/.git/config per Hand zu aendern. Meine Datei als Beispiel:

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
Bitte benutzt als Email-Adresse eine RZ- oder ATIS-Adresse. Momentan gibt es noch keine Ueberpruefung, aber wenn sich die Leute nicht dran halten werden ungueltige Mailadressen abgewiesen.

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
Je nachdem wie ihr euren Key erzeugt habt werdet ihr nach dem Passwort fuer den Schluessel gefragt. Nun wird alles heruntergeladen, und zwar in ein neues Verzeichnis "hm1script".

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.
Wichtig ist die leere Zeile zwischen Kurzbeschreibung und Erlaeuterungen ist extrem wichtig. vim-nutzer bekommen bei aktivierter Syntax-Hervorhebung rote markierungen wenn sie in diese Zeile schreiben.

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
Wer also nicht pushen moechte, etwa weil ihm der Aufwand zu gross ist, kann so arbeiten und dann patches an jemanden senden, der zugriff hat.
julius
Beiträge: 3
Registriert: Fr 24. Okt 2008, 03:19

Re: GIT HowTo

Beitrag von julius »

Is ja prima das Ihr das Skript auf git habt.
Wo ist der Direktlink hin ?
Sitze im ATIS und hätte das Skript echt gebrauchen können.
Nukleus
Beiträge: 27
Registriert: Mi 12. Nov 2008, 18:44

Re: GIT HowTo

Beitrag von Nukleus »

hier gehts ums neue script, das alte findet man via google.
Antworten

Zurück zu „HM-Skript“