Git
Редактировать на GitHubmerge отличается от rebase?Чем tag отличается от branch?В ветке develop есть коммит с изменениями, которые нужно перенести в ветку master. Как это сделать?Для чего нужна команда git commit --amend?Что такое Trunk-based development?Состояние репозитория ушло на много коммитов вперед. Как откатить весь репозиторий к определенному коммиту?В репозиторий запушен коммит с изменениями в двух файлах. Как откатить изменения этого коммита?Вопросы
Что такое GitFlow?
GitFlow - модель ветвления Git.
Ключевые идеи:
- Данная модель отлично подходит для организации рабочего процесса на основе релизов,
- Gitflow предлагает создание отдельной ветки для исправлений ошибок в продуктовой среде.
Последовательность работы при использовании модели Gitflow:
- Из master создается ветка develop.
- Из develop создаются ветки feature.
- Когда разработка новой функциональности завершена, она объединяется с веткой develop.
- Из develop создается ветка release.
- Когда ветка релиза готова, она объединяется с develop и master.
- Если в master обнаружена проблема, из нее создается ветка hotfix.
- Как только исправление на ветке hotfix завершено, она объединяется с develop и master.
Чем merge отличается от rebase?
git merge - выполняет слияние коммитов из одной ветки в другую. В этом процессе изменяется только целевая ветка. История исходных веток остается неизменной.
Преимущества:
- Простота,
- Сохраняет полную историю и хронологический порядок,
- Поддерживает контекст ветки.
Недостатки:
- История коммитов может быть заполнена (загрязнена) множеством коммитов,
- Отладка с использованием git bisect может стать сложнее.
git rebase- сжимает все изменения в один патч. Затем интегрирует патч в целевую ветку. В отличии от merge, rebase перезаписывает историю, потому что она передаётся завершенную работу из одной ветки в другую. В процессе устраняется нежелательная история.
Преимущества:
- Упрощает потенциально сложную историю,
- Упрощение манипуляций с единственным коммитом,
- Избежание слияния коммитов в занятых репозиториях и ветках,
- Очищает промежуточные коммиты, делая их одним коммитом, что полезно для DevOps команд.
Недостатки:
- Сжатие фич до нескольких коммитов может скрыть контекст
- Перемещение публичных репозиториев может быть опасным при работе в команде,
- Появляется больше работы,
- Для восстановления с удаленными ветками требуется принудительный пуш. Это приводит к обновлению всех веток, имеющих одно и то же имя, как локально, так и удаленно.
Чем tag отличается от branch?
И tag и branch представляют собой указатели на коммиты.
- Ветка представляет собой отдельный поток разработки, который может выполняться одновременно с другими разработками в той же кодовой базе. Коммит в ветке указывает на изменения, которые добавляются в новых коммитах
- Тег представляет собой версию определенной ветки в определенный момент времени.
Tag представляет собой версию той или иной ветки в определенный момент времени. Branch представляет собой отдельный поток разработки, который может выполнятся одновременно с другими разработками в той же кодовой базе.
В ветке develop есть коммит с изменениями, которые нужно перенести в ветку master. Как это сделать?
Необходимо найти хеш этого коммита и выполнить следующую комманду в ветке, в которую нужно перенести коммит.
git cherry-pick <commit_hash>Для чего нужна команда git commit --amend?
commit --ammend используется для исправления сообщения последнего коммита. Также возможно использовать, чтобы добавить файлы в индекс (git add), после добавить файлы в коммит git commit --ammend.
Что такое Trunk-based development?
Trunk-based Development (TBD) - модель ветвления, в которой разработчики совместно работают над кодом в одной ветви, называемой "стволом" (trunk). При этом другие ветви имеют короткий срок жизни благодаря использованию документированных методов.
Состояние репозитория ушло на много коммитов вперед. Как откатить весь репозиторий к определенному коммиту?
git reset --hard <tag/branch/commit hash>
В репозиторий запушен коммит с изменениями в двух файлах. Как откатить изменения этого коммита?
git revert <commit hash>
Последнее обновление: 24 сент. 2025 г., 14:02:09