GIT
Achtung: Ich bin purer Anfänger in GIT und ich notiere hier meine ersten Versuche.
- Es kann sein, dass ich manches falsch verstehe und daher diese Informationen zum Teil falsch sind.
Config
Die zentrale Konfigurationsdatei ist im Homeverzeichnis
~/.gitconfig
- Branches ohne Pager auflisten
Standardmäßig wird zur Anzeige ein Pager verwendet, z.B. less
- Um das zu verhindern:
git config --global pager.branch false
- Difftool konfigurieren
git config --global difftool.prompt false git config --global diff.tool kdiff3
- Difftool soll keine Backupdateien erzeugen
Standardmäßig erzeugt GIT nach dem Zusammenführen im Arbeitsverzeichnis eine *.orig
Datei. Folgendes Kommando verhindert dies.
git config --global mergetool.keepBackup false
Branches
"hotfix_1"
dient im folgenden als Beispiel.
- Neuer Branch
git checkout -b "hotfix_1"
- Branch wechseln
git checkout "testBranch"
- Eine Datei zu einem anderen Branch verschieben
git add . git commit -m "alles fertig" git checkout anderer_branch ./file.php
- Branches auflisten
git branch
- Branch löschen
git branch -d "hotfix_1"
- Branches zusammenführen
Voraussetzung: Alle Änderungen commiten, dann
git checkout master git merge "hotfix_1"
- Branch umbenennen
Aktueller Branch
git branch -m neuer_Name
Irgendein Branch
git branch -m alter_Name neuer_Name
Commits
Dateien vergleichen
- Eine bestimmte Datei in verschiedenen Branches vergleichen
git diff master branch_test datei.php
Datei in grafischem Difftool anzeigen und bearbeiten (Konfiguration siehe oben)
git difftool master branch_test datei.php
Dateien ignorieren
- Eine globale
.gitignore
Datei anlegen
touch ~/.gitignore_global
- GIT Konfiguration ändern
git config --global core.excludesfile ~/.gitignore_global
- Excludefile bearbeiten
# Beispiel tmp/
- Dateien aus dem Repo entfernen
git rm --cached tmp/*
Zu einem früheren Commit wechseln
Änderungen verwerfen
Alle Änderungen im Arbeitsverzeichnis vor einem Commit rückgängig machen
git checkout HEAD *
Die Änderungen werden aus der Staging Area entfernt.
Zu einem früheren Commit zurückkehren
- Zuerst die Commits anzeigen
git log
Commits verwerfen
Zu einem bestimmten Commit zurückkehren und alle späteren Änderungen verwerfen
git reset --hard 8a0181d7b38472a04d90b64dd84a8bc62d138686
Alle Änderungen nach dem Commit 8a0181d7b38472a04d90b64dd84a8bc62d138686
sind hiermit verworfen.
In der Hierarchie zurückgehen
- Zwei Schritte zurück:
git checkout HEAD~2
Man befindet sich nun im Zustand eines losgelösten HEAD.
- Hier kann man einen neuen Branch beginnen
git checkout -b <branch_name>
Letzte Commit Beschreibung ändern
git commit --amend
oder
git commit --amend "neue Beschreibung"
Release numbering
- Eine Release Nummer vergeben
git tag -a 1.2.34 -m "CSS patch"
- Releases anzeigen
git describe
- Release Nummer löschen
git tag -d 1.2.34
Workflow
- Repo erstellen
git init
- Dateien zum Repo hinzufügen
git add .
- Commit
Nach Änderungen an Dateien, diese zum Repo hinzufügen
git add . git commit -m "Kommentar"
Submodules
Ein Verzeichnis mit mehrfach genutzten Bibliotheken kann man als Submodul zu einem Repo hinzufügen.
- Ich habe mich vorerst entschieden, meine Projekte ohne Submodules zu organisieren. Ich verwalte die gemeinsam genutzten Bibliotheken in einem eigenen GIT Repo. Um die Synchronisation kümmere ich mich manuell - ohne Verwendung von Submodules.
Include Repo anlegen
cd /srv/www/include git init git add .
Include Repo einbinden in das HauptRepo
cd /srv/www/htdocs/project mkdir includefiles git submodule add ./includefiles cd ./includefiles git add .
Arbeiten mit Submodules
- Alle GIT Befehle im Submodul Verzeichnis beziehen sich auf das Submodul.
- Nach einem Commit oder Branchwechsel im Projekt Repo muss das Submodul upgedatet werden.
git submodule update
Erst dann werden die Änderungen im Include Verzeichnis im Haupt Repo wirksam.