[Trennmuster] Bitte kein Merge
Werner LEMBERG
wl at gnu.org
So Mai 13 12:33:55 CEST 2018
>> Wenn möglich, führe bitte ein »Rebase« aus, bevor Du »git commit«
>> machst – ich hätte gerne eine lineare Historie.
>
> Ich bin mit git noch nicht so erfahren und für jeden Hinweis dankbar.
> Ist folgende Befehlsabfolge korrekt?
>
> git add <Datei>
> git rebase
> git commit
> git push
Nein.
Um Änderungen in den git-Cache zu geben:
git add <Datei>
git add <Datei>
... (man kann »git add« ausführen, sooft man will)
Um einen Commit zu erzeugen:
git commit (oder »git commit <Datei>« oder »git commit -a«)
Um einen *lokalen* (also noch nicht gepuschten) Commit zu ändern:
git add <Datei>
...
git commit --amend
Um Änderungen aus einem git-Repositorium im Internet zu holen und
gleichzeitig ein Rebase durchzuführen, wobei lokale, noch nicht mit
»git add« behandelte Änderungen erhalten bleiben:
git stash
git pull --rebase
git stash pop
Wenn das alles geklappt hat, schlußendlich
git push
ausführen.
Obiges ist ein grober Ablauf. Wenn's Probleme gibt (sprich: sich
Änderungen überschneiden), wird's leider ein bißchen haarig, und es
kann recht mühsam sein, eine lineare Historie zu erzeugen:
(1) Verwende »git format-patch ...«, um lokale Commits komplett zu
speichern. Zum Beispiel speichert der Befehl »git format-patch
HEAD^^« die letzten zwei Commits als patch-Dateien.
(2) Entferne lokale Commits aus dem git-Repositorium mittels »git
reset --hard ...«.
(3) Führe »git pull --rebase« aus.
(4) Führe wiederholt »git am < <patch-Datei>« aus, um die in (1)
gespeicherten Patches Stück für Stück wieder anzuwenden. In
diesem Schritt kann man Konflikte manuell auflösen (siehe
git-Handbuch, wie das genau geht).
(5) Schließe mit »git push« ab.
Werner
Mehr Informationen über die Mailingliste Trennmuster