2012-05-07 3 views
8

У меня возникли серьезные проблемы с попыткой сделать git rebase --interactive на моем репо. Я получаю загадочную ошибку fatal: ref HEAD is not a symbolic ref, и моя rebase перестает функционировать. Я должен git rebase --abort, чтобы вернуться в хорошее состояние.Я не могу git rebase --interactive больше

Вот выход (ы) я получаю: https://gist.github.com/d38f1e2d2ec9bc480b6f

Что я сказал в прошлом, что это связано с тем, что я нахожусь в «отделенной РУКОВОДИТЕЛЯ» режим, но как бы Когда я был в этом режиме, я попал в rebase. Я, безусловно, начинаю с master, а затем запускаю git rebase --interactive и изменяю текстовый файл git-rebase-todo на то, что хочу. И тогда эта ошибка происходит.

Я попросил всех здесь на работе, а некоторые люди @ # git на freenode. Никто, кажется, не понимает мою проблему или не знает, что такое решение. Ошибка Google для этой ошибки не создала ничего, соответствующие поиски в StackOverflow ничего не доказали. Я не могу понять этого, и это действительно хромает от раздавливания каждой фиксации, которую я нажимаю для освоения, чтобы теперь нажимать каждое небольшое изменение, которое я делаю как свою отдельную фиксацию.

+0

Судебный пересмотр -i описан здесь: http://davidstechtips.com/2011/03/collapsing-commits-in-git/. В вашем случае попробуйте 'git checkout master , например' 8bbfbba'? Или вы не выполнили «git rebase -continue» после конфликта? – VonC

+1

Возможно, вы все еще находитесь в предыдущей перестановке, которая отделяет голову во время повторной обработки. Это может произойти легко во время большой перестройки в свете фиксации текущего интерактивного шага, и вы могли бы отвлечься. Я только что работал над перестановкой, где мне приходилось много работать (много маленьких шагов), но в итоге я сделал отдельный «rebase -i» для каждого шага, чтобы я не потерялся. Также поможет стрельба из git-gui и gitk visualiser. [убедитесь, что вы начинаете работу в одном из своих местных филиалов] –

+0

Вы можете установить, действительно ли вы находитесь в режиме автономного режима HEAD, просматривая содержимое '.git/HEAD'. Если в нем есть текст« ref: refs/heads/... «вы не находитесь в отключенном режиме HEAD. Если, с другой стороны, он содержит SHA-ID (например, небольшую строку букв и цифр), вы действительно находитесь в режиме автономного HEAD. –

ответ

3

Во время «git rebase» выдается сообщение ref, которое вы отменяете. Если это ref является фиксацией, вы получите отдельную голову; если это ссылка на ветку, то эта ветка проверяется. Если во время совершения FATAL происходит, вы остаетесь с рабочим каталогом в состоянии munged. Например, если вы были на ветке Foo, и вы попытались переустановить Bar, то после FATAL вы будете в баре или где-нибудь после Бар с несколькими обязательствами по переустановке. Вы восстанавливаетесь, проверяя Foo как просто.

git rebase --abort 

или, если перебазироваться действительно заклинило (см ссылку ниже), как:

git checkout -f Foo 

После этого, вы можете смело попробовать Rebase снова попробовать отладить почему FATAL происходит. Here - это случай, когда rebase не работает, когда заканчивается память, а «git rebase -abort» не работает.

+1

Использование 'git checkout -f' не решает мою проблему. Я делал 'git rebase -abort', чтобы каждый раз выходить из перестановки. Вот что я получаю, когда я пытаюсь выполнить git checkout -f': https://gist.github.com/4d3aa867602f1e438e9b – tubbo

+0

Это связано с моим использованием 'git-tracker'. Сожалею!! – tubbo

+0

Использование «git rebase --abort» - предпочтительный подход; но это не всегда работает (см. ссылку) – GoZoner

Смежные вопросы