Как да използвам интерактивната пребаза на Git с локално хранилище (без отдалечено/изходно)?

Използвам git като локална система за контрол на източника най-вече за проследяване на историята и разл. Все още искам да използвам rebase, за да правя fixup/squash на WIP ангажименти, които ще правя периодично. Когато обаче се опитам да направя git rebase -i, получавам следното:

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

Изглежда, че git не очаква да използвате интерактивно пребазиране без дистанционно управление нагоре по веригата? Как да направя това?


person mcw    schedule 03.06.2015    source източник


Отговори (2)


git rebase -i накратко, без да указва целеви клон, ще накара git да предположи, че се опитвате да пребазирате спрямо отдалечен клон, проследен от вашия клон. Ето защо съобщението за грешка споменава неща за дистанционни.

Когато посочите цел, git ще пребазира спрямо този commit- иш:

git rebase -i <commit-ish>
person Sébastien Dawans    schedule 03.06.2015
comment
Можете да проследявате всеки клон, местен или отдалечен. - person jthill; 03.06.2015
comment
Да - опитах се да редактирам отговора, за да посоча това, защото по същество прередактирах първоначалния си отговор, за да бъде същият. HEAD~3 тук не е съществена част от синтаксиса, това е само една (от всички) възможни commit препратки. - person mcw; 03.06.2015
comment
HEAD~3 е там само защото вашият оригинален отговор се опитва да пребазира HEAD~3 и преминава през ненужни стъпки, за да го постигне. Мога да сложа commit-ish, ако предпочиташ... - person Sébastien Dawans; 03.06.2015
comment
Този отговор трябва да обясни какво означава commit-ish или поне да има връзка към него като коментара на mcw0933 за другия отговор - person reggaeguitar; 23.10.2018

Така че накратко - ако имате 3 локални ангажимента и сега искате интерактивно да ги rebase/squash/etc:

git rebase -i HEAD~3

(Вижте обяснението на Себастиен!)

person MikeW    schedule 24.11.2016
comment
Да - благодаря @MikeW. Това е един конкретен пример за това какво можете да използвате за параметъра commit-ish към git. За всеки, който не е запознат с това какво е commit-ish... вижте този друг SO отговор: stackoverflow.com/questions/23303549/ - person mcw; 29.11.2016