Невозможно закончить 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 вместо. Проблема в том, что если уже есть другая работа, основанная на ветке, она останется основанной на своей старой версии. В то время как в новой версии его можно перебазировать, но очень легко забыть и сделать что-то не так и очень запутанно для ничего не подозревающего коллеги.

Другие вопросы по тегам