Grundlagen für Git
DEPRECATED / VERALTET! Die nachfolgende Anleitung ist veraltet und kann nicht mehr verwendet werden. Inzwischen sind beide Repositories einzeln, es wird kein Submodul mehr verwendet. Siehe auch: Erste (Repository-)Schritte
(Anmerkung: Die folgenden "Erste Schritte"-Beschreibungen beziehen sich auf das Entwickeln im master-Branch. Arbeitet man auf einem anderen Branch, ist "master" durch den entsprechenden Namen zu ersetzen.)
Projekt auschecken (lokale Kopie anlegen)
git clone ssh://git@github.com/michz/diy14bus
cd diy14bus
git submodule init
git submodule update
git checkout master //Für den Quellcode (nicht notwendig, da standard)
git checkout gh-pages //Für die Blogeinträge
Die Änderungen hochladen
git add neue_datei.txt //für neue Dateien oder einfach mit -A
git commit -m "description of my changes"
git push origin master //oder statt "master" dann "gh-pages" für Blogeinträge
Änderungen in Submodul commiten
Hat man Änderungen in einem Git-Submodul vorgenommen (z.B. im RIOT-Verzeichnis an den Board-Dateien gearbeitet), müssen diese doppelt bekannt gemacht werden: (Annahme: Das Submodul heißt "RIOT")
// sicherstellen, dass man IM Submodulpfad ist, z.B. durch cd RIOT
git add <geänderte Dateien>
git commit -m "description of my changes"
git push origin master
cd .. // in ein Verzeichnis wechseln, das OBERHALB des Submoduls liegt
git add RIOT
git commit -m "updated submodule"
git push origin master
Jetzt weiß auch das "Hauptrepository", dass das Submodul angepasst wurde und zeigt wieder auf den aktuellsten Commit.
lokale Kopie aktualisieren
Ich will mein lokales Repository auf neusten Stand holen ohne löschen und git clone
Mache ich immer mit
git checkout master -f
Bügelt halt alles nieder, was lokal noch vorhanden ist, lässt aber nur lokal vorhandene Dateien in Ruhe (war für mich noch nie ein Problem)
Gibt es eine elegantere Möglichkeit? Ein checkout ohne -f zählt nur die Differenzen auf und ein pull holt nur die neuen Dateien und lässt die Modifizierten in Ruhe.