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