Kochbuch (GIT)

Aus Siduction Wiki DE
Wechseln zu: Navigation, Suche

GIT-Tutorial: Übersicht

Vorbemerkung

Hier werden "Rezepte" vorgestellt: Typische Situationen und sinnvolles Vorgehen dafür, in Kurzform.

Konvention Commit-Kommentare

  • Erste Zeile enthält eine Zusammenfassung, max. 50 Zeichen lang.
  • Zweite Zeile ist leer
  • Die weiteren Zeilen sind max. 72 Zeichen lang

Kommandos auf tiefster Ebene

SHA1-Hash-Abkürzung expandieren

 git rev-parse d4d2cea
d4d2cea2c5feecc46af985a52cc5d091e49c4708

Inhalt eines Blobs ermitteln

 git cat-file -p d4d2c
Diese Datei enthält genau eine Zeile!

Lokales Repository

Dateien aus dem Index entfernen

Die Umkehrung von "git add" ist: "git rm --cached".

Beispiel: Alle Python-Compilate aus dem Index entfernen und künftiges Eintragen verhindern:

git rm --cached src/*.pyc
echo "*.pyc" >>.gitignore

Dateien im Arbeitsverzeichnis durch den Stand im Objektspeicher ersetzen

Normal

Den Objektspeicher auf den Stand vor dem letzten Commit bringen, das Arbeitsverzeichnis aber nicht ändern:

 git reset --mixed HEAD~1

</source> Objektspeicher auf den Stand eines Commits, z.B. dem Tag v0.1, bringen, Arbeitsverzeichnis nicht ändern:

 git reset --mixed v0.1

Radikal

Alle Dateien des Arbitsverzeichnisses auf den aktuellen Stand des aktuellen Branches:

 git reset --hard

Hinweis: Einzelne Dateien können nur dann zurückgesetzt werden, wenn der gewählte Commit einzig diese Datei enthält. Was anderes ist nicht sinnvoll, da ein Commit atomar ist. Ausnahme: Abgleich mit HEAD (siehe unten)

Einzelne Dateien auf den Stand von HEAD bringen

 git checkout HEAD dir1/blabla.txt

Mergen

Bugfix aus einem anderen Branch übernehmen

Ein Bugfix umfasst genau einen Commit (3a1b2...) im Branch v1.3. Dieser soll in den Branch master übernommen werden, ohne die anderen Commits von v1.3.

 git remote add origin git3@git.siduction.org:sandbox/sandbox-siduction
 git fetch

ToDo: Das wichtigste fehlt noch

Umgang mit Depots

Verbindung zu Depot herstellen

 git remote add origin git3@git.siduction.org:sandbox/sandbox-siduction

Es entsteht dann folgender Abschnitt in .git/config:

[remote "origin"]
        url = git3@git.siduction.org:sandbox/sandbox-siduction
        fetch = +refs/heads/*:refs/remotes/origin/*

Verbindung zu Depot entfernen

 git remote rm origin

Branch dev ins Depot exportieren

Verbindung zu Depot herstellen (siehe oben) Dann folgenden Eintrag in .git/config ergänzen:

[branch "dev"]
        remote = origin
        merge = refs/heads/dev

Alle Branche aus dem Depot importieren und mergen

 git pull --all

Leeres Depot füllen

Wird z.B. mit gitolite ein leeres Depot erzeugt, so führt ein

git push

zur Fehlermeldung

No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'master'.

Lösung:

git push origin master

Branch im Depot löschen

Es soll der Branch bad_branch gelöscht werden:

git push origin --delete bad_branch

Tags ins Depot bringen

# Alle Tags:
git push --tags
# Einzelnen Tag
git push origin <tag>