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

Git неудачная перебаза

Я пытаюсь переделать работу коллеги.

Во-первых, я получаю тонну конфликтов, где < < < < < чтобы создать новый код.

Затем через некоторое время появляется следующая ошибка:

fatal: update_ref failed for ref 'refs/heads/dev_504': 
cannot lock ref     'refs/heads/dev_504': ref refs/heads/dev_504 is at
 XXXXXXX 
 but expected     XXXXXXXX
Could not move back to refs/heads/dev_504

Затем, если я попытаюсь продолжить, я получаю следующую ошибку:

fatal: cannot resume: .git/rebase-apply/final-commit does not exist.

Как я могу исправить это, чтобы rebase не выдавал ошибку?

4b9b3361

Ответ 1

  • Вы можете запустить git rebase --abort, чтобы полностью отменить rebase. Git вернет вас в ваше состояние ветвления, как это было до того, как была вызвана ошибка Git.

  • Вы можете запустить git rebase --skip, чтобы полностью пропустить фиксацию. Это означает, что ни одно из изменений, внесенных проблематичной фиксацией, не будет включено. Очень редко вы выбираете этот вариант.

  • Вы можете исправить конфликт.

  • В противном случае вы должны повторно создать свою ветку или вы сможете удалить каталог .git/rebase-merge, который содержит состояние переадресации.

Ответ 2

По всей видимости, ветвь, на которую вы хотите переустановить, также была пересоединена между временем разветвления, может быть, очистка истории или перезагрузка еще одной ветки. Если это так, вам необходимо:

  • abort, текущий беспорядок: git rebase --abort
  • чтобы быть текущим: git fetch
  • теперь интересная часть:

    git rebase --onto BUDDY_BRANCH YOUR_BRANCH~ YOUR_BRANCH

например. вы разветвляетесь своего локального мастера (checkout of origin/master), нового ветки test_branch (который вы теперь хотите обновить с помощью текущего источника/мастера)

git rebase --onto master test_branch~ test_branch

Что это делает в простых терминах, он берет начальную родительскую фиксацию ваших ветвей, находит ее в текущем мастере и сводит на нет.

Ответ 3

Убедитесь, что ваши изменения и изменения ваших коллег совершены.

Если вы хотите, чтобы изменения коллег сохранялись на вашем, вы можете просто сделать,

git rebase < ваша веткa > < another_branch >

Else

git rebase < another_branch > < your_branch >

Ответ 4

Когда вы обновляете локальную ветку с другой веткой, вы должны разрешать конфликты, выбирая между вашими изменениями и их. После разрешения конфликтов вы можете продолжить перезагрузку, написав эту команду git:

git rebase --continue

В случае, если вы хотите прервать действие перезагрузки, вы можете написать эту команду git:

`git rebase --abort`