Git Kurztutorial

From Alda
Jump to: navigation, search

Anleitung zur Abgabe der Übungszettel über Git und Bitbucket

Übungszettel können in Zukunft auch das Online Repository Bitbucket (https://bitbucket.org/) abgegeben werden. Dazu nutzen wir das Versionverwaltungstool Git (http://git-scm.com/).

Terminologie

Die genauen Bezeichnungen können sich zwischen den verschiedenen Versionsverwaltungssystemem unterscheiden (z.B. Git, Bazaar, SVN, etc.)

Revision 
Eine konkrekte Version einer Datei, eines Ordners oder einer ganzen Ordnerstruktur die im Versionsverwaltungssystem enthalten ist
Branch 
i.d.R. die aktuellste Revision. In der Softwareentwicklung nutz man häufig mehrere branches parallel, z.B. einen Hauptentwicklungszweig (branch) und mehrere Nebenzweige für Experimente oder neue Programfeatures.
working copy 
Die Dateien und Ordner die man gerade bearbeitet und deren Änderungen i.d.R. noch nicht im Versionsverwaltungssystem enthalten sind
Repository 
Eine Sammlung an Revisionen mit zeitlicher und/oder logischer Ordnung.
commit 
Das einpflegen der aktuellen working copy in das Repository (dabei wird eine neue Revision erzeugt)

Kurzanleitung

  1. Anlegen eines Accounts bei Bitbucket
  2. Erzeugen eines Repositories (Repositories -> create Repository)
    1. Sinnvollen Namen für das Repository wählen, z.B. ALDA
    2. Repository Type: Git
    3. Language: Python
  3. Setzen der Zugriffsrechte
    1. (Repository -> <eigenes Repository> -> Admin -> Access Managment)
    2. Hier kann man dem Übungspartner Schreibrechte zuweisen, bzw. dem Übungsgruppenleiter Leserechte
  4. Klonen des Repositories auf den eigenen Rechner (damit erzeugt man auch eine working copy)
    1. In der Kommandozeile: git clone https://<nutzername>@bitbucket.org/<nutzername>/<repository>.git
  5. Übungszettel lösen
  6. Für die Übung relevante Dateien einchecken
    1. Es empfiehlt sich Unterordner für die verschiedenen Übungszettel anzulegen, z.b. 01,02,etc.
    2. git add <dateiname> bzw. git add <ordnername> (fügt den ordner und alle enthaltenen Dateien hinzu)
    3. git commit -a -m "Statusnachricht" (Erzeugt eine neue Revision mit allen hinzugefügten neuen Dateien sowie den Änderungen an bereits bestehenden Dateien)
    4. git push -u origin master (Übertragen der Daten zum Server)
  • Erst nach diesem letzem Schritt können die Übungsleiter auch die Lösungen einsehen. Es empfiehlt sich auf der bitbucket Homepage im eigenen Repository unter "Code" zu überprüfen ob alle wichtigen Dateien vorhanden sind.
  • Es genügt ein Repository pro Team. Einzelne Übungszettel sollten in Unterordnern organisiert sein.

git merge/push/pull/fetch

Es gibt verschiedene möglichkeiten commits zwischen dem bitbucket repository und euren repositories hin und her zu schieben:

  • git pull ist git fetch und dann git merge
  • git fetch holt die Änderungen aus dem remote repository
  • git push schiebt die Änderungen ins remote repository
  • git merge versucht die Änderungen von einer anderen revision in euer arbeitsverzeichniss einzufügen

Änderungen hochladen

Dafür folgendes ausführen um Chaos zu vermeiden:

  1. git commit (einen commit erstellen)
  2. git pull (abgleich mit dem remote repository, falls jemand anderes etwas hochgeladen hat)
  3. git push (hochladen Eures commits und des evtl. benötigten zusammenführens)

Änderungen rückgängig machen

Hat man lokal etwas geändert und möchte wieder den Stand des letzten commits haben (git pull holt sich den commit aus dem repo):

  • git checkout -- <filename>

git add <filename> macht man rückgängig mit:

  • git reset HEAD <filename>

git commit <...> macht man rückgängig mit (sollte man ein noch älteres commit entfernen möchten, HEAD durch den SHA1 des commits ersetzen):

  • git revert HEAD

oft hat man aber nur vergessen ein file zu "git add"en, dann macht man:

  • git add <filename>
  • git commit --amend -m "<commit msg>"

Notes

Wenn man bei einem commit nicht -m "<commit msg>" angibt, öffnet sich der standard Texteditor zum schreiben dieser Nachricht. Den standard Texteditor ändert man mit:

  • git config --global core.editor "<editor>"

Nützliche Links