Что делать, когда новые коммиты происходят после git rebase?

Я только что закончил с особенно волосатым перебазированием (кто-то несколько недель работал над веткой, никогда не перебирая.) Мне потребовалось около двух или трех часов, потому что используемый мной "читаемый человеком" формат - это просто набор идентификаторов и ссылок.

В то время как я делал эту ребазу, в ветке появилось еще два коммита, прежде чем у меня был шанс сделать git push результат ребазирования.

Есть ли лучшая практика для получения этих новых коммитов без повторного выполнения перебазирования или слияния? Первоначально я думал, что я смогу выполнить эти новые коммиты и сделать git push -f, но это будет опасно?

2 ответа

Решение

Вы должны быть в состоянии повторно отменить ваши коммиты снова.

Единственная проблема заключается в том, что вам придется переделать разрешение конфликтов, потому что вы не активировали git rerere,

Ну,... тебе не обязательно с rerere-train.sh сценарий
См. " Треган Руссель"?

В этой простейшей форме скрипт начинается с указанного вами коммита и проходит каждый родительский коммит для поиска конфликтов.

Это позволит вам записать эти прошлые разрешения конфликтов и снова выполнить перезагрузку, не выполняя их снова.

cherry-pick только для объединения определенных коммитов, но если ваша ветка содержит много коммитов, которые необходимо объединить, то лучше rebase Это.

У разных людей могут быть разные лучшие практики. Я следую за следующим:

  1. git pull --rebase так, чтобы я мог гарантировать, что моя ветвь обновлена ​​от удаленной ветви, это было создано.
  2. git push origin :feature_branch это удалит удалить ветку удаленного объекта. Хотя я знаю, что могу просто git push -force feature_branch но я хочу подтвердить, что git ничего не испортит:):):)
  3. в конце концов git push origin feature_branch

Я буду рад узнать вашу практику или предложить мне что-нибудь получше.

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