GIT: Unterschied zwischen den Versionen

Aus Mediawiki Ferdinand Gruber
Zur Navigation springen Zur Suche springen
Zeile 34: Zeile 34:
 
=== Merge Konflikt ===
 
=== Merge Konflikt ===
 
Wenn nicht alle Dateien automatisch zusammengeführt werden können, so gibt es eine Meldung
 
Wenn nicht alle Dateien automatisch zusammengeführt werden können, so gibt es eine Meldung
* Änderungen manuell durchführen
+
: Der Editor Kate zeigt die Konflikte an. Nach durchgeführten Änderungen einen Commit machen
Der Editor Kate zeigt die Konflikte an. Nach durchgeführten Änderungen einen Commit machen
 
 
  # Beispiel
 
  # Beispiel
 
  git add project/view/file.php
 
  git add project/view/file.php
 
  git commit
 
  git commit
* Merge wiederholen
+
Merge wiederholen
 
  git merge "testbranch
 
  git merge "testbranch
 +
 
=== Branch umbenennen ===
 
=== Branch umbenennen ===
 
Aktueller Branch
 
Aktueller Branch

Version vom 4. März 2021, 23:09 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

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.