Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Git-Workshop 2015
Wir hoffen, euch hat der Git-Workshop gefallen! Nun müsst ihr kein Dateinamenschaos mehr ertragen. ❤
Bei allen Fragen: Mail an tim@timbaumann.info oder iblech@web.de!
Git-Cheatsheets
http://www.git-tower.com/blog/git-cheat-sheet-de
https://www.atlassian.com/dms/wac/images/landing/git/atlassian_git_cheatsheet.pdf
https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf
http://chneukirchen.org/talks/gittingstarted2/chneukirchen-2011-gittingstarted.pdf (ist ein Foliensatz)
Git funktioniert am besten mit textbasierten Formaten
Am meisten profitiert man von Git, wenn man textbasierte Dateiformate wie LaTeX oder wie nahezu jede Programmiersprache verwendet. Bei LibreOffice- oder Word-Dateien kann Git Unterschiede zwischen Versionen nicht übersichtlich anzeigen.
Git als Ersatz für Backups?
Wenn man das eigene Repository nicht nur lokal auf dem Rechner, sondern auch auf GitHub (oder Alternativen) speichert, dient Git in gewissen Grenzen als Backup: Wird die Kopie auf dem eigenen Rechner zerstört, ist das zunächst nicht weiter tragisch. Man muss dann nur das Repository neu klonen; auch die gesamte Versionsgeschichte ist wieder vorhanden (viel besser als bei einem regulären Backup!). Wenn man sein GitHub-Repository als Backup ansieht, sollte man niemals "git push --force" verwenden, denn damit kann man aus Versehen das GitHub-Repository überschreiben (statt lediglich wie sonst neue Commits hinten anzuhängen).
Git ist kein Ersatz für Backups, wenn man das Repository nur auf dem eigenen Rechner speichert.
Git-Repository in der Dropbox
Wer seine Daten nicht über GitHub der NSA zur Verfügung stellen möchte, sondern über Dropbox, kann das machen. Dabei speichert man in der Dropbox nicht das gesamte Arbeitsverzeichnis, sondern nur das Repository. Details stehen auf http://www.systemfeld.de/2011/11/02/git-repos-in-der-dropbox/. Update 2016: Es gibt eine fertige Anbindung an Git, die das übernimmt. https://github.com/anishathalye/git-remote-dropbox
Den letzten Commit ändern
Du hast vergessen, eine Datei hinzuzufügen, oder dich bei der Commit-Nachricht vertippt? Kein Problem, füge deine Änderungen normal mit git add zum Index hinzu und verwende dann git commit --amend um den letzten Commit mit den Änderungen zu erweitern (anstatt einen neuen Commit zu erzeugen). Wenn du den fehlerhaften Commit schon zu GitHub gepusht hast, musst du anschließend git push --force verwenden.
LaTeX-Hilfsdateien ignorieren
LaTeX-Hilfsdateien wie 'garben.log' oder 'garben.aux' sollte man nicht zum Repository hinzufügen. Damit man nicht ständig aufpassen muss, diese Dateien nicht zum Repository hinzuzufügen, kann man git beibringen, diese Dateien gar nicht zu beachten. Dazu legt man im Arbeitsverzeichnis eine Datei namens '.gitignore' (der Punkt am Anfang ist wichtig!) mit folgendem Inhalt an:
*.log
*.aux
Die LaTeX-Hilfsdateien sind aber bereits in meinem Repository!
Man kann Dateien aus dem Repository mit git rm löschen, z.B. mit "git rm garben.log". Die Löschung der Datei muss man anschließend committen. (Achtung: Die Datei verschwindet dabei nicht aus der Historie des Repositories. Falls du also versehentlicherweise deinen privaten SSH-Schlüssel auf GitHub veröffentlicht hast, so hilft git rm nichts. Tipp: Veröffentliche nicht deine privaten Schlüssel!)
Ich bin es leid, ständig mein GitHub-Passwort einzugeben!
Dann musst du SSH einrichten: https://help.github.com/articles/generating-ssh-keys/
Muss ich Git von der Kommandozeile verwenden?
Nein, es gibt auch gute grafische Benutzeroberflächen, mit denen man den Standard-Workflow auch ohne Terminal erledigen kann (beispielsweise GitHub für Windows/Mac oder gitg und giggle auf Linux). Es lohnt sich aber dennoch, die Bedienung von der Kommandozeile zu erlernen. Denn sonst ist man aufgeschmissen, wenn eine wichtige Operation nicht von der GUI unterstützt wird.
Grafische Programme, die die Versionsgeschichte anzeigen können, sind unter anderem:
gitk
gitg
git gui
tig (läuft auf der Kommandozeile)
Die letzten Änderungen im Arbeitsverzeichnis rückgängig machen
Den letzten in git (im Repository) gespeicherten Zustand von foo.tex kannst du mit "git checkout foo.tex" wiederherstellen.
Den letzten Commit rückgängig machen
Wenn die Dateien des Arbeitsverzeichnissen trotzdem modifiziert bleiben sollen: git reset --soft HEAD~1
Wenn auch das Arbeitsverzeichnis zurückgesetzt werden soll: git reset --hard HEAD~1
Hilfe! Irgendwas ist schief gelaufen. Nun ist das Repository irgendwie verkorkst.
Git ist äußerst flexibel; man kann eigentlich alle Aktionen rückgängig machen. Google ist dein Freund! Eine möglicherweise stressfreiere Lösung ist aber, das Repository einfach neu von GitHub zu klonen.
Mit jemanden zusammenarbeiten, der partout kein Git verwenden möchte
Auch das ist möglich. Es ist umständlicher, als wenn deine Koautorin bzw. dein Koautor direkt Git verwenden würde; aber immer noch viel angenehmer, als völlig auf Git zu verzichten. Die grundlegende Idee besteht darin, für die Perspektive deines Mitstreitenden einen eigenen Branch anzulegen. Immer, wenn dir eine neue Version zugeschickt wird, aktualisierst du die Kopie in diesem Branch (so, als ob deine Kollegin bzw. dein Kollege das selbst gemacht hätte). Anschließend verwendest du git merge, um die neuen Änderungen mit den deinigen zusammenzuführen. Bei Fragen: Mail an Tim und Ingo!
Welchen Augsburger Mathematikerinnen und Mathematikern kann ich auf GitHub folgen?
https://github.com/benevs
https://github.com/carinawi
https://github.com/Gesalat
https://github.com/GraffL
https://github.com/iblech
https://github.com/labachevskij
https://github.com/MatthiasHu
https://github.com/maximilianhuber
https://github.com/mdbenito
https://github.com/michael-hartmann
https://github.com/mnieper
https://github.com/StefanSchBu
https://github.com/ThinkCaren
https://github.com/timjb
Welchen Augsburger Mathematikerinnen und Mathematikern kann ich auf Bitbucket folgen?
https://bitbucket.org/labachevskij/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment