2015-06-03 19 views
23

Ich benutze git als lokales Quellcode-Kontrollsystem hauptsächlich für History und Diff-Tracking. Ich möchte immer noch Rebase verwenden, um WIP-Commits, die ich in regelmäßigen Abständen machen werde, zu reparieren/zu reparieren. Wenn ich versuche, obwohl git rebase -i zu tun, erhalte ich folgendes:Wie verwende ich Git's interaktive Rebase mit einem lokalen Repository (ohne Remote/Ursprung)?

There is no tracking information for the current branch. 
Please specify which branch you want to rebase against. 
See git-rebase(1) for details 

    git rebase <branch> 

If you wish to set tracking information for this branch you can do so with: 

    git branch --set-upstream-to=<remote>/<branch> MyBranch 

Es ist wie git scheint nicht erwarten, dass Sie interaktive rebase ohne vorgeschalteten Fern benutzen? Wie mache ich das?

Antwort

19

git rebase -i In Kurzform, ohne Angabe eines Zielzweigs, wird git davon ausgehen, dass Sie versuchen, einen Rebase-Zweig für eine von Ihrem Zweig erfasste Remote-Zweigstelle einzurichten. Deshalb erwähnt die Fehlermeldung Sachen über Fernbedienungen.

Wenn Sie ein Ziel angeben, wird git rebase gegen diese begehen-ish:

git rebase -i <commit-ish> 
+1

Sie jede Filiale, lokal oder remote verfolgen können. – jthill

+0

Yeah - ich habe versucht, die Antwort zu bearbeiten, um darauf hinzuweisen, weil ich meine ursprüngliche Selbstantwort im Grunde so geändert habe, dass sie dieselbe ist. 'HEAD ~ 3' ist hier kein essentieller Teil der Syntax, es ist nur ein (beliebiger) möglicher' commit'-Verweis. – mcw0933

+1

'HEAD ~ 3' ist nur da, weil deine ursprüngliche Antwort versucht, auf' HEAD ~ 3' zu rebasen und unnötige Schritte auszuführen, um es zu erreichen. Ich kann commit-ish setzen, wenn Sie bevorzugen ... –

7

Also kurz gesagt - wenn Sie 3 lokale Commits haben und Sie möchten jetzt interaktiv rebase/Squash/etc sie:

git rebase -i HEAD~3 

(Siehe Sébastien Erklärung!)

+0

Yup - danke @MikeW. Das ist ein konkretes Beispiel dafür, was Sie für den Parameter "commit-ish" für git verwenden können. Für alle, die nicht wissen, was ein "commit-ish" ist ... schauen Sie sich diese andere SO-Antwort an: http://stackoverflow.com/questions/23303549/what-are-commitis-ish-and-tree-ish-ish- In-Git – mcw0933