Хорошо, у меня есть ветка feature/12, она более или менее готова, поэтому я разветвляюсь и начинаю работать над feature/13, который зависит от feature/12.

Происходит проверка кода, и в feature/12 вносятся небольшие изменения. Поэтому я применяю эти изменения, а затем объединяю master в единую фиксацию функции, как и протокол в компании (git rebase -i master).

Теперь вернемся к feature/13, как мне объединить историю feature/13, чтобы не было конфликтов истории с feature/12 и master? Могу ли я просто git rebase включить / 12` и исправить любые конфликты?

1
o_o_o-- 4 Дек 2014 в 20:23

2 ответа

Лучший ответ

Да, просто переустановить против мастера.

Rebase попытается применить несжатые коммиты поверх сжатых и, вероятно, увидит конфликты (хотя независимые или последние коммиты будут распознаны как уже примененные и автоматически пропущены). Ты можешь:

  • просто исправьте конфликт как обычно, что не должно приводить к поэтапным изменениям,
  • распознать старую фиксацию и git rebase --skip, когда она появится, или
  • поскольку вы используете интерактивную перестановку, удалите старые строки коммитов pick из файла git-rebase-todo.

Если вы чувствуете себя очень осторожно и хотите убедиться, что операция rebase случайно не добавила или не удалила какие-либо изменения , которые у вас есть на feature/13, вы можете сравнить различия из версии до перебазирования и теперь с помощью такой команды сразу после завершения операции перебазирования:

diff -u <(git diff master...feature/13@{1}) <(git diff master...feature/13)

Это не дает идеально чистого вывода - он сообщит о различиях в контекстных строках и I не знаю лучшего способа, но обязательно покажет вам любые изменения, потерянные (или полученные) из-за перебазирования.

3
Community 23 Май 2017 в 12:21

Могу ли я просто git rebase feature/12 исправить любые конфликты?

Это сработает, но обратите внимание, что дополнительные изменения в feature/12, которые были объединены, теперь тоже есть в master, и все конфликты уже там разрешены. Это также просто средство для очистки, чтобы основывать свою работу на производственной версии любых зависимостей. Если позже выяснится, что вам нужно снова переустановить новую работу в feature/12, вам все равно придется это сделать.

1
jthill 4 Дек 2014 в 22:54