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 не выдавал ошибку?
Ответы
Ответ 1
-
Вы можете запустить git rebase --abort
, чтобы полностью отменить rebase. Git вернет вас в ваше состояние ветвления, как это было до того, как была вызвана ошибка Git.
-
Вы можете запустить git rebase --skip
, чтобы полностью пропустить фиксацию. Это означает, что ни одно из изменений, внесенных проблематичной фиксацией, не будет включено. Очень редко вы выбираете этот вариант.
-
Вы можете исправить конфликт.
-
В противном случае вы должны повторно создать свою ветку или вы сможете удалить каталог .git/rebase-merge, который содержит состояние переадресации.
Ответ 2
По всей видимости, ветвь, на которую вы хотите переустановить, также была пересоединена между временем разветвления, может быть, очистка истории или перезагрузка еще одной ветки. Если это так, вам необходимо:
например.
вы разветвляетесь своего локального мастера (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`