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: 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 не выдавал ошибку?

Ответ №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`

Оцените статью
Добавить комментарий