2017-01-04 12 views
5

Ich habe eine Reihe von unpushed commits in meinem Feature-Zweig gemacht und möchte nun Zugehöriges Commits visuell neu ordnen und teilweise quetschen. Ich denke, die Lösung liegt irgendwie in Git interaktiv, aber wie kann man sie aufrufen?Git rebase interaktiv die letzten n commits

$ git rebase --interactive --onto <the-ID-of-the-first-commit-to-rewrite> 

erscheint nur das oben mit einem VI

noop 

Inhalt durch kommentierte Informationen folgen. Nach dem Beenden wird mein Kopf auf das angegebene Commit zurückgesetzt.

Wie löst man die interaktive Rebase korrekt aus, um die Commits seit einem bestimmten Commit zu modifizieren?

+0

Sie lösen es richtig aus, Sie müssen nur lernen, es zu benutzen. Lesen Sie den auskommentierten Abschnitt, der eine kurze Erklärung enthält, was Sie tun sollten. – Maroun

+0

f @ MarounMaroun: Er startet nicht den richtigen Befehl. –

Antwort

9

Sie

git rebase --interactive <sha1> 

verwenden sollten, wo <sha1> sollte nicht die sha der sein erstes verpflichten Sie neu schreiben wollen, aber die sha des Commits kurz zuvor.

wenn Ihre Geschichte sieht wie folgt aus:

pick 43576ef last commit 
... 
pick 5116d42 first commit to rewrite 
pick cb85072 last good commit 

dann können Sie es verschiedene Möglichkeiten, die auf dem anzuzeigen verpflichten zu rebase:

git rebase -i cb85072 
git rebase -i 5116d42^ 

wo

  • ^ Mittel das Commit kurz zuvor.
  • -i ist nur kurz für --interactive
+0

Es sieht so aus als ob das "auf" die Probleme verursacht hat. –

1

Ich vermisse die Aktion rebase in Ihrer Anweisung:

git rebase -i <id-of-commit> 
+0

Ja, war ein Tippfehler. Ich habe die Frage behoben. –

6

können Sie auch von Ihrem letzten Schritt zurück durch eine bestimmte Anzahl von Commits begehen. Wenn Sie zum Beispiel die letzten 5 Commits neu erstellen möchten, können Sie diesen Befehl verwenden: git rebase -i HEAD~5.

Verwandte Themen