Benutzer-Werkzeuge

Webseiten-Werkzeuge


tools:git

Dies ist eine alte Version des Dokuments!


git

Website Deployment mit Git

Eine gute Anleitung ist auf der Website von Benjamin Kott zu finden.


Befehle

Letzten commit ändern

Bei nachfolgenden Anpassungen, die zum letzten commit gehören, kann per git commit –amend den letzten commit ergänzen.
Auch wer nur einen Tippfehler in der letzten Commit-Nachricht korrigieren möchte kann diesen Befehl verwenden, hier muss dann vorher keine Datei in den Staging-Bereich gebracht werden.

git add korrigierte-datei.php
git commit --amend

Letzten commit "löschen"

Mit diesem Befehl wird der Branch auf den vorletzten Commit zurückgesetzt. Der letzte Commit ist in diesem Branch dann nicht mehr vorhanden.

git reset --hard HEAD^

Vorherigen commit "löschen"

Wenn nicht der letzte, sondern einer der vorherigen Commits aus der Historie entfernt werden muss, kann man git cherry-pick verwenden:

git-Historie:

b257cb2  -- [HEAD]    [TASK] Der neueste Commit; soll behalten werden
d26c6b7  -- [HEAD^]   [MESSED-UP] Dieser Commit muss gelöscht werden!
522d6c5  -- [HEAD^^]  [FEATURE] Letzter sauberer Stand vor dem Problem

Anleitung:

# 1. Den Commit vor dem zu entfernenden Commit in der Historie suchen (z.B. 522d6c5):
git log --oneline

# 2. Neuen Branch anlegen mit dem letzten sauberen Stand:
git checkout -b tempfix 522d6c5

# 3. Nun im neuen Branch alle Commits selektiv hinzufügen,
#    die nach dem Problem-Commit folgten und behalten werden sollen:
git cherry-pick b257cb2

# 4. Wechsel auf den alten, fehlerhaften Branch:
git checkout <branch>

# 5. Hard reset auf den letzten sauberen Stand:
git reset --hard 522d6c5

# 6. Die mit cherry-pick in den neuen Branch übernommenen Commits mergen:
git merge tempfix

Datei aus Index entfernen, ohne sie zu löschen

Hiermit wird eine Datei aus dem git Repository entfernt, verbleibt aber als Datei am Speicherort. Zu beachten ist, dass sie dann ggf. auch auf externen Repositories (remote) verbleibt.

git rm --cached example.txt 

Fehlerbehebung

remote: error: cannot run hooks/post-receive: No such file or directory

Mögliches Problem: Der Pfad zur bash stimmt nicht. Hinter dem shebang (#!) am Beginn der Datei ist ein Link gesetzt. Diese Datei muss auf dem Server vorhanden sein.

#!/bin/bash
# Rest der Datei

Mögliches Problem: carriage returns (^M) in Datei post-receive behindern die Ausführung. Lösung:

Terminal:

# Dateiinhalt in Terminal ausgeben lassen:
cat -v dateiname

# Falls vorhanden - carriage returns in Datei entfernen:
sed -i -e 's/\r//g' dateiname
tools/git.1539972416.txt.gz · Zuletzt geändert: 2018/10/19 20:06 von admin