Какие команды Git используются для работы с ветками и слияниями
Что проверяют
Работали ли вы с Git в команде, а не в одиночку. Следом обычно спрашивают разницу между merge и rebase и что делать при конфликте.
Как отвечать
Ветки:
git switch -c feature/x: создать ветку и перейти в неё.git switchиз Git 2.23 снял с перегруженногоgit checkoutработу с ветками;git branch: список локальных веток,-aдобавляет удалённые,-dудаляет слитую ветку,-Dудаляет без проверки,-mпереименовывает;git push -u origin feature/x: первая отправка с привязкой к удалённой ветке, дальше хватаетgit push;git fetch: забирает изменения без слияния, аgit pullэтоfetchплюсmergeилиrebase, в зависимости от настройкиpull.rebase.
Слияние:
git merge feature/x: если текущая ветка не ушла вперёд, Git по умолчанию делает fast-forward и просто двигает указатель. Иначе создаётся merge-коммит;--no-ff: коммит слияния всегда, чтобы в истории была видна граница фичи;--ff-onlyотказывается сливать, если fast-forward невозможен;--squash: складывает изменения ветки в индекс одним набором, коммит вы делаете сами;git rebase main: переносит ваши коммиты поверх свежегоmain, история получается линейной. Коммиты переписываются, поэтому после rebase отправленной ветки нуженgit push --force-with-lease, а не голый--force.
При конфликте git status показывает файлы, вы правите маркеры, делаете git add и git merge --continue (или git rebase --continue). Передумали: git merge --abort. В Java-проектах конфликты чаще всего в pom.xml или build.gradle. Ловушка с миграциями: две ветки с одинаковым номером миграции Flyway конфликта в Git не дадут, зато Flyway откажется стартовать, найдя две миграции одной версии.
Где спотыкаются
Называют --ff особым режимом слияния. Fast-forward и так включён по умолчанию, флаг лишь перекрывает merge.ff из конфига.
Делают rebase общей ветки, в которой работают коллеги, и затирают их коммиты принудительным push.
Разрешают конфликт, взяв целиком свою или чужую версию файла, и не запускают сборку. Для pom.xml это частый способ потерять зависимость, добавленную соседом.