GIT: Unterschied zwischen den Versionen
(git status) |
|||
Zeile 104: | Zeile 104: | ||
* Release Nummer löschen | * Release Nummer löschen | ||
git tag -d 1.2.34 | git tag -d 1.2.34 | ||
+ | === Commits anzeigen === | ||
+ | |||
+ | * Normale LOG Ansicht | ||
+ | git log | ||
+ | * Eine Zeile pro Commit | ||
+ | git log --pretty=oneline | ||
== Workflow == | == Workflow == |
Version vom 23. November 2021, 17:18 Uhr
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
Branches anzeigen. Der aktive Branch wird farblich hervorgehoben - openSuse
git branch
Einen neuer Branch beginnen
git checkout -b "testbranch"
Zum neuen 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
Einen Branch löschen
git branch -d "hotfix_1"
Branches zusammenführen
Voraussetzung: Alle Änderungen commiten, dann
git checkout master git merge "testbranch"
Merge Konflikt
Wenn nicht alle Dateien automatisch zusammengeführt werden können, so gibt es eine Meldung
- Der Editor Kate zeigt die Konflikte an. Nach durchgeführten Änderungen einen Commit machen
# Beispiel git add project/view/file.php git commit
Merge wiederholen
git merge "testbranch
Branch umbenennen
Aktueller Branch
git branch -m neuer_Name
Irgendein Branch
git branch -m alter_Name neuer_Name
Commits
Geänderte Dateien anzeigen
git status
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
git restore <Datei>
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>
- Zurück zu einem bestimmten Commit
Zuerst den Hash Code des Commits ermitteln
git log
Im folgenden Beispiel wird zu diesem Commit gewechselt und zugleich ein neuer Branch erzeugt
git checkout -b <branch_name> b62c8bd940c04b758ceb0583aec84479ddc56a8b
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
Commits anzeigen
- Normale LOG Ansicht
git log
- Eine Zeile pro Commit
git log --pretty=oneline
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.