Невозможно закончить Git Rebase
В настоящее время я работаю над веткой и хочу обновить ее с помощью master. Поэтому я попытался сделать ребаз.
текущая ветка, над которой я работаю: crtdev
Я пытался сделать ребаз, как,
git checkout crtdev
git rebase master
// used diff mergetool to solve merge issues
git rebase --continue
Теперь говорит: "Применить:" все сообщения о коммитах, которые я сделал в этой ветке "
Но после этого что нужно сделать?
Я проверил репо, и нет никаких изменений, и когда я сказал git status
Я вижу объединенные файлы с именем filename.html.orig
- изменить Когда я запускаю git rebase --continue
Я получаю это сообщение.
Запустив Git status
Я вижу это сообщение
# On branch crtdev
# Your branch and 'origin/crtdev' have diverged,
# and have 33 and 8 different commits each, respectively.
# (use "git pull" to merge the remote branch into yours)
Чтобы завершить ребаз, что нужно сделать?
1 ответ
Перебазирование завершено.
# On branch crtdev # Your branch and 'origin/crtdev' have diverged, # and have 33 and 8 different commits each, respectively. # (use "git pull" to merge the remote branch into yours)
Видите, это ничего не говорит о продвижении в процессе. Перебазирование закончено. Единственное, что он говорит, это то, чтоcrtdev
а такжеorigin/crtdev
разошлись, но это именно то, что он должен был сказать после перебазирования.
Вы сделали ребазcrtdev
наmaster
, Это означает, что вы отказались от старой истории crtdev
и воссоздал его на master
, тем не мение origin/crtdev
это отдельная ссылка и до сих пор указывает на старую историю. Ваша история теперь выглядит примерно так:
X--Y--Z...--master
\ \
\ A'--B'--C'--D'--E'--F'--crtdev
\
A--B--C--D--E--F--origin/crtdev
РедакцииA'
-crtdev
сделать те же изменения (без разрешения конфликта), как и A
-origin/crtdev
сделал, но они новые изменения. Поскольку они также содержат новые изменения из master и ID коммитов в git - это контрольная сумма его содержимого.
Теперь,если никто не основал что-либо наorigin/crtdev
Вы просто хотите вытолкнуть новую историю. git push -f
(имена ветвей совпадают, поэтому аргументы не нужны; полная команда будетgit push -f origin crtdev:crtdev
).
Если, однако,кто-то уже использовалorigin/crtdev
ты сделал не то. Вы должны отказаться от результатов ребаз (git reset --hard origin/crtdev
) а также merge
вместо. Проблема в том, что если уже есть другая работа, основанная на ветке, она останется основанной на своей старой версии. В то время как в новой версии его можно перебазировать, но очень легко забыть и сделать что-то не так и очень запутанно для ничего не подозревающего коллеги.