Как использовать интерактивную перебазировку Git с локальным репозиторием (без удаленного / исходного)?

Я использую git в качестве локальной системы управления исходным кодом в основном для отслеживания истории и различий. Я все еще хочу использовать rebase для исправления/сквоша в коммитах 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
Этот ответ должен объяснять, что означает коммит, или, по крайней мере, ссылаться на него, как комментарий mcw0933 к другому ответу. - person reggaeguitar; 23.10.2018

Короче говоря, если у вас есть 3 локальных коммита, и теперь вы хотите интерактивно их перебазировать/раздавить/и т.д.:

git rebase -i HEAD~3

(См. объяснение Себастьяна!)

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