Подтвердить что ты не робот

Git rebase ветвь на master не удалось, как решить?

Я работал над локальной копией удаленного репозитория git. Я создал ветку на моей локальной копии, позвольте назвать ее "my_branch". Я сделал несколько раз на my_branch.

Недавно я нажал "my_branch" на удаленный. Однако я не знал, что кто-то еще добавил версию для удаленного мастера. Итак, я принесли его своему местному хозяину.

Итак... короткая история, мое местное репо выглядит следующим образом (я пытаюсь использовать соглашение о схемах здесь).

 --C0--------------C7--  (local master)
      \
       --C1-C2-C3--     (local my_branch)
             \
              --C4-C5-C6--     (local sandbox_branch)

Я хочу, чтобы он выглядел так:

 --C0--------------C7--  (local master)
                      \
                       --C1'-C2'-C3'--     (local my_branch)
                             \
                              --C4'-C5'-C6'--     (local sandbox_branch)

Я попытался перезагрузить my_branch ONTO локальный мастер, но получил это сообщение об ошибке (я использую визуальный инструмент для git, называемый GitX):

Rebase Failed!
There was an error rebasing HEAD with branch 'master'.

command: git rebase refs/heads/master

It seems that I cannot create a rebase-apply directory, and
I wonder if you are in the middle of patch application or another
rebase.  If that is not the case, please
    rm -fr /my_project_directory/.git/rebase-apply
and run me again.  I am stopping in case you still have something
valuable there.

Что я делаю неправильно? Как я должен справиться с этим? Если бы я должен был сделать это в командной строке, то какая команда приведет меня к состоянию на диаграмме выше?

ОБНОВЛЕНИЕ 1

Кстати, я не нахожусь в середине патча приложения или другой rebase... по крайней мере, не преднамеренной. После того, как я узнал, что пульт был обновлен ПОСЛЕ того, как я нажал, я сделал выборку. Может ли это сделать что-нибудь, чтобы GitX подумал, что я нахожусь в середине патча приложения или другой rebase?

Я также обновил диаграмму, чтобы быть более точным. От моей ветки есть ветка. Я не включил его в исходный вопрос b/c. Я не думал, что это имеет значение. Я включаю на всякий случай...

ОБНОВЛЕНИЕ 2

FYI... Дерево мастеров для 'local' и для 'remote' похоже на диаграмму, которую я рисовал, за исключением того, что у нее нет sandbox_branch.

4b9b3361

Ответ 1

git rebase обнаружил каталог .git/rebase-apply и поэтому предполагает, что вы можете оказаться в середине rebase. Это произошло бы, если бы был конфликт во время предыдущей перезагрузки, и rebase не был закончен; т.е. вы не запускали один из git rebase --abort, git rebase --skip или git rebase --continue (последний после разрешения конфликта).

В любом случае, неважно, как вы попали в это состояние, если не думаете, что вы вообще перезапустили git. Просто rm -fr /my_project_directory/.git/rebase-apply, как подсказывает подсказка, и вы должны иметь возможность сделать rebase сейчас.

Но подождите. Поскольку вы говорите, что вы уже опубликовали свою ветку в удаленном репозитории, вам не следует пытаться переустановить мастер на нее. Фактически, если ваш пульт настроен на отказ от компрометации без перемотки вперед (что, как представляется, рекомендуется в большинстве случаев рекомендуется), вы даже не сможете нажать на изменения rebase'd на свой пульт. В целом, это плохая практика, чтобы попытаться изменить фиксацию (что делает git rebase) после того, как вы опубликовали ее на удаленном компьютере.