Skip to content
ocean90 edited this page Jan 14, 2013 · 7 revisions

Übersicht


---

Git Set Up

Downloads

Offizielle Git Homepage
GitHub Client für Mac
GitHub Client für Windows

Konfiguration: Name und E-Mail

Die Daten sind nötig, um Commits erfolgreich abzusetzen. Jeder Commit wird mit diesen Eingaben verknüpft.

$ git config --global user.name "Name"
$ git config --global user.email "E-Mail Adresse"

Die eingetragene E-Mail sollte der E-Mail Adresse bei GitHub entsprechen! (Hinweis: E-Mail wird öffentlich einsehbar sein.)

Konfiguration: Authentifizierung

GitHub erlaubt die Authentifizierung über die beiden Protokolle SSH und HTTPS.

HTTPS: https://github.com/fh-koeln/wba1-2012.git

Bei HTTPS wird bei jedem Commit Name und Passwort abgefragt. (GitHub GUI speichert die Daten.)

SSH: [email protected]:fh-koeln/wba1-2012.git

Für eine SSH Verbindung ist ein SSH Key nötig. Howto: SSH Key generieren. (GitHub GUI generiert automatisch einen Key.)



Übersicht von Git Befehlen

  • git init → Unabhängiges lokales Repository erstellen
  • git clone → Entferntes Repository kopieren
  • git status → Lokale Änderungen anzeigen
  • git diff → Lokale Änderungen anzeigen
  • git add → Änderungen zum Übernehmen markieren
  • git reset → Änderungen zum Übernehmen entmarkieren
  • git commit → Änderungen dauerhaft übernehmen
  • git pull → Lokales Repository aktualisieren
  • git push → Änderungen an entferntes Repository senden


Was ist ein Repository?

Ein Repository ist ein Verzeichnis, wo digitale Objekte gespeichert werden können. Ein solches Repository ist zum Beispiel wba1-2012.

Wie clone ich ein Repository?

Jedes Repository hat eine eindeutige URL. Diese kann auf GitHub gefunden werden:

Repo URL

Nutze entweder die HTTP oder die SSH Variante, siehe Authentifizierung.

In Git gibt es zum Clonen den Befehl clone welcher mit der Repository URL ergänzt wird:

$ git clone [email protected]:fh-koeln/wba1-2012.git

Standardmäßig wird der Ordner gleich des Repository Namens sein. Hier also wba1-2012.

Wie halte ich meine Kopie (Clone) auf den aktuellen Stand?

Die Kopie ist nur zum Zeitpunkt des Clonens aktuell. Danach muss sie manuell auf dem Laufenden gehalten werden. Dies geht mit dem Befehl pull.

$ git pull


Was ist ein Commit?

Mit einem Commit werden deine Änderungen mit einer Nachricht versehen. Dabei bestätigst du sie gleichzeitig für die nächste Veröffentlichung.

$ git commit -am "Datei aktualisiert"

Wie füge ich Dateien zu einem Commit hinzu?

Bevor ein Commit abgesetzt werden kann, müssen die Änderungen dem Commit hinzugefügt werden. Dies geht mit dem Befehl add. Möchte man alle Änderungen hinzufügen, dann reicht ein Punkt:

$ git add .

Möchte man eine spezielle Datei ansprechen, dann nur die jeweilige Datei angeben:

$ git add /pfad/zur/datei.txt

Wie setze ich einen Commit zurück?

Hier gibt es zwei Varianten - die "softe" und die "harte" Variante. Bei der soften Vaiante wird nur der Commit zurückgesetzt, die Ändernungen bleiben bestehen. Bei der harten Variante hingegen werden auch die Ändernungen verworfen. Vorsicht also.

$ git reset --soft HEAD~1
# oder
$ git reset --hard HEAD~1

Die 1 entspricht dabei der Anzahl der Commits, die zurückgesetzt werden sollen.



Was ist ein Push?

Die Änderungen sind bis Dato in deinem lokalen Repository. Um die Änderungen an das entfernte Repository, hier GitHub, zu senden, wird der push Befehl benötigt.

$ git push


Was ist ein Branch?

Als Branch bezeichnet man einen Zweig im Repository. Der Hauptzweig ist der Master Branch.

Das Problem: Der Master ist keine Spielwiese! Die Lösung: Einen eigenen, temporären „Entwicklungszweig“ erstellen.

Vorteile:

  • Lokal und unabhängig
  • Pushen prinzipell optional, aber ideal für (Sub-)Teams
  • Umkehrschluss: Nicht alle branches sind lokal verfügbar!

Branches werden in Git mit dem Befehl branch verwaltet. git branch zeigt zum Beispiel die lokalen Branches an.

Wie erstelle und veröffentliche ich einen Branch?

Zunächst erstellt man lokal einen Branch vom Master Branch:

$ git branch branch_name
$ git checkout branch_name

Danach kann dieser mit dem Push Befehl veröffentlicht werden:

$ git push origin branch_name

Wie ziehe ich einen externen Branch auf meinen lokalen Rechner?

Dies setzt voraus, dass der Remote Branch existiert.

$ git branch branch_name origin/branch_name
$ git checkout branch_name

Was darf ich in meinem Branch NICHT machen?

Auch wenn der eigene Branch eine größere „Spielwiese“ darstellt, solltest du folgende Dinge trotzdem nicht machen:

  • Lösche keine vorhanden Ordner
  • Ändere nicht die Stylesheets im revealjs-template Verzeichnis
  • Ändere keine Dateien außerhalb deines speziell für den Vortrag angelegten Ordner

Warum? Dein Branch soll wieder mit dem Master vereint werden. Änderungen obiger Art würden später in Konflikten und Mehrarbeit enden.

Wie stelle ich meine lokalen Änderungen öffentlich?

$ git add .
$ git commit -am "Branch aktualisiert"
$ git push origin branch_name

Wie kann ich den lokalen Branch wechseln?

Git stellt dafür den Befehl checkout zur Verfügung:

$ git checkout master
$ git checkout branch_name
$ git checkout master

Wie kann ich einen Branch löschen?

Falls der Branch schon veröffentlicht wurde:

$ git push origin --delete branch_name

Einen lokalen Branch löschen:

$ git branch -d branch_name


Was ist ein Merge?

Unter einem Merge versteht man die Zusammenlegung zweier Versionszweige/Branches. Merges passieren meistens automatisch.

  • Bei parallelen Arbeiten (gleicher Branch)
  • Ergebnisse veröffentlichen (eigener Branch → Master)
  • Branch aktualisieren (Master → eigener Branch)

Git stellt dafür den Befehl merge bereit.

Wie überführe ich meine Änderungen aus Branch X in den Master Branch?

Zunächst sollte man sich im richtigen Branch befinden, nämlich im Master Branch. (Annahme: Der Master Branch ist vorhanden und der Branch branch_name.)

$ git branch
* master
branch_name
$ git merge branch_name
$ git push origin master

Wie löse ich Konflikte?

Konflikte enstehen meistens, wenn Änderungen an Dateien noch nicht lokal gezogen worden. Git wird das Pushen dann unterbinden. Ein git pull ist nötig. Dann wird Git die betroffenen Dateien markieren.

Eine markierte Datei hat folgendes Schema:

<<<<<<< HEAD
Ciao Mama
=======
Ciao Bella
>>>>>>> f53e906557375ba556372320d1d96ef265365d4a

Was zwischen <<<<<<< HEAD und ======= sind unsere Änderungen, zwischen ======= und >>>>>>> die entfernten Änderungen, die noch nicht gezogen waren. Hier musst du dich nun entscheiden, was wirklich in die Datei soll. Nach dem Säubern der Datei (Git Zeichen auch entferen):

$ git commit -a

Ein Editor öffnet sich mit einer schon vorbereiteten Commit Nachricht. Dies einfach schließen und den Merge Vorgang beenden:

$ git push


## Wie stelle ich meine Präsentation online zur Verfügung? [↑](#toc)

Damit die Präsentation auch direkt online unter fh-koeln.github.com/wba1-2012/ verfügbar ist, müssen folgende Schitte ausgeführt werden:

  • Die Präsentation sollte finalisiert sein.
  • Die Präsentation ist im Master Branch, siehe Branch und Master mergen.
  • Die public.json im Master Branch ist um deine Präsentation erweitert.

Zum Format der public.json:

"2012-12-06-git-basics/index.html":
    {
        "title" : "Git Basics",
        "authors" : ["Dominik Schilling", "Christoph Jerolimov"]
    },

Zuerst kommt der Pfad zur Präsentation. In title wird der Titel der Präsentation festgehalten und in authors der/die Autor/en definiert. Achte darauf, dass der letzte Eintrag nicht mit einem Komma beendet wird.



## Wie kann ich Bilder ins GitHub Wiki einbinden? [↑](#toc)

Die Markdown-Syntax für Bilder lautet ![Alt-Text](pfad/zum/bild.png "Titel").

Beispiel:

Ran an die Arbeit

Der Pfad kann zum Beispiel die URL einer Grafik aus einem Branch sein. Achte darauf, dass es die RAW Variante ist.

Als Alternative bietet sich ein Checkout des Wikis an. Die Befehle sind die selben.

$ git clone [email protected]:fh-koeln/wba1-2012.wiki.git
$ cd wba1-2012.wiki

Hier kann ein themenspezifischer Ordner angelegt werden, in welchem die Bilder gespeichert werden können. Pushen läuft dann wieder mit

$ git add .
$ git commit -am "Bilder hinzugefügt"

Für die Mac User:

Nachdem das Wiki ausgecheckt wurde, bitte ins Git Verzeichnis wechseln und einmal folgendes ausführen:

$ git config core.precomposeunicode true

(Hintergrund)

Sollte es trotzdem noch zu Problem kommen, dann folgende Befehle ausführen:

$ git pull
$ git reset --hard HEAD

Dabei wird das Wiki lokal zurückgesetzt, alle lokalen Änderungen gehen verloren.



## Wie ergänze ich meine Dokumentation um eine Sidebar? [↑](#toc)

Nachdem das Wiki geclont wurde, sollte ein Ordner zu dem Thema erstellt werden. In dem neu erstellten Ordner eine Datei namens _Sidebar.md erstellen. Anschließend die Datei mit der Dokumentation in den selben Ordner kopieren. Der Inhalt der Sidebar kann dann wieder über die Web-Oberfläche geändert werden.

Clone this wiki locally