[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