Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Конечно, такое никуда не годится!… Что же делать, чтобы история оставалась красивой и прямой?
git push origin branch --force.то у вас скорее всего будет Windows + msysgit (git-bash) + TortoiseGit и т.д.
Git сохраняет в commit только изменения над файлами, которые вы проделали в рабочем каталоге. Множество изменений и даёт нам состояние файла(ов) на определённый момент. Сохраняется набор изменений и имена файлов (объектов), которые относятся к этому изменению.
merge vs rebase пытаюсь придерживаться золотой середины. На что надо обратить внимание новичкам (может следует вынести в основную статью):<b>rebase</b> «поменяет» все коммиты ветки, которую вы ребейзите. Это выльется в то, что вы теперь не сможете сделать push без force! (если вы ранее делали push этого бранча, разумеется)rebase, тем больше вероятность конфликтов и вам прийдется править конфликты для каждого конфликтного коммита, коммитить его и продолжать дальше ребейз (в мерже, например, конфликты будут только по сравнению с конечными состояниями файлов)rebase делается сразу для пачки коммитов — возможна ситуация, что у вас будут «некомпилируемые коммиты». Т.е., вы наложите изменения файлов, но при этом, возможно, какие-то патчи сделали «нерабочие» коммиты, где неподключена библиотека, переопределена функция и т.п. Это выльется в проблему, когда нужно будет откатиться назад, на «сребейзнутый» коммит и окажется, что этот коммит «невалидный»<b>merge</b>. Он всегда обратим, в отличии от rebase. Если нужны изменения из другой ветки — можно мержить другую ветку в свою хоть каждый день. Проблем не будет. Можно делать cherry-pick, если нужен ровно один патч. --force)rebase — Ваш выход! Все ветки для нового релиза ребейзятся на основе последнего коммита в мастере. А так как мы хорошо читали эту статью и делали все, как здесь написано — то наши атомарные коммиты не вызывают больших конфликтов. И в конце мы получаем наши ветки такими, как буд-то они начались с последней версии мастера!
Ежедневная работа с Git