it Новини Git на просунутому рівні: rebase, cherry-pick, subtree
Git на просунутому рівні: rebase, cherry-pick, subtree

Git на просунутому рівні: rebase, cherry-pick, subtree

1 444
10 липня 2025 в 16:27

Освойте просунуті можливості Git: від rebase та cherry-pick до subtree та інтерактивних методів роботи з історією. Керуйте гілками та комітами як професіонал.

Rebase: перезапис історії комітів

Команда git rebase — потужний інструмент для зміни історії комітів і послідовності змін. Вона особливо корисна, коли потрібно підтримувати чисту й лінійну історію розробки.


Наприклад, ви працюєте в гілці feature, а гілка main вже оновилася. Щоб підтягнути зміни без створення зайвих merge-комітів, використовуйте:

git checkout feature
git rebase main

Гілка feature тепер міститиме ваші коміти, "переписані" поверх останнього стану main.


Також ви можете скористатися інтерактивним режимом:

git rebase -i HEAD~4

Це дозволяє редагувати, об'єднувати (squash), видаляти або змінювати порядок комітів. Такий підхід зручний перед пушем у спільний репозиторій — історія стане акуратною і зрозумілою.


Cherry-pick: вибіркове перенесення комітів

Якщо вам потрібно перенести конкретний коміт з однієї гілки в іншу, але не весь вміст, команда git cherry-pick стане в пригоді.


Припустимо, ви хочете перенести виправлення з гілки bugfix у гілку develop:

git checkout develop
git cherry-pick a1b2c3d

Гілка develop тепер містить коміт із зазначеним хешем, навіть якщо він із іншої гілки.

Cherry-pick корисний для ізольованих змін або під час вибору окремих виправлень для різних версій продукту.


Subtree: підключення інших репозиторіїв

git subtree дозволяє вбудовувати один репозиторій в інший як підпроєкт. На відміну від submodule, subtree не потребує окремого керування залежностями й працює як частина основного репозиторію.


Наприклад, підключимо зовнішній проєкт:

git subtree add --prefix=vendor/lib https://github.com/username/library.git main --squash

Ця команда завантажить зовнішній репозиторій і розмістить його в папці vendor/lib вашого проєкту.


Щоб оновити зовнішній проєкт пізніше:

git subtree pull --prefix=vendor/lib https://github.com/username/library.git main --squash

Subtree особливо добрий для проєктів, де зовнішній код має бути частиною загального коміту та історії.


Stash: тимчасове збереження змін

git stash дозволяє зберегти поточні зміни, не комітячи їх, і повернутися до чистого робочого каталогу. Це зручно, якщо ви не завершили роботу, але потрібно терміново переключитися на іншу гілку.

git stash
git checkout main

Повернутися до збережених змін можна за допомогою:

git stash pop

Список усіх збережених stash’ів:

git stash list


Bisect: пошук проблемного коміту

git bisect — чудова команда для пошуку першого коміту, що спричинив баг. Git використовує бінарний пошук по історії комітів.

Приклад:

git bisect start
git bisect bad # поточний коміт містить баг
git bisect good a1b2c3d # коміт, у якому все працювало

Git почне переходити між проміжними комітами, поки ви не вкажете, у якому з них баг з'явився вперше.


Clean: видалення непотрібних файлів

Якщо в каталозі проєкту залишилися тимчасові або згенеровані файли, які не відстежуються Git, їх можна видалити командою:

git clean -fd

Прапорець -f означає "force", а -d — видалення директорій. Будьте обережні: ця команда незворотна.


Shortlog і log: аналіз історії комітів

git shortlog дозволяє швидко побачити список авторів і кількість їхніх комітів:

git shortlog -sn

А команда git log з параметрами — потужний спосіб візуального аналізу історії:

git log --oneline --graph --decorate --all

Це покаже дерево комітів у компактному вигляді.


Tag: мітки та версії

git tag використовується для маркування важливих комітів, наприклад — релізів:

git tag v1.0.0
git push origin v1.0.0

Можна створювати анотовані теги з додатковою інформацією:

git tag -a v1.1.0 -m "Реліз версії 1.1.0"
Telegram group

Підписуйтесь на нашу групу в Телеграмі 🇺🇦

Більше цікавих новин

Коментарі
Додати коментар

Поки що коментарів немає