Пошук уроків, статей та іншого контенту
git log, git diff та git show — як досліджувати, що й коли змінювалось у проєкті.
git log
# commit a1b2c3d4... (HEAD -> main)
# Author: Ім'я Прізвище <email@example.com>
# Date: Mon Jul 20 14:32:00 2026
#
# Додати валідацію email у формі реєстраціїКожен коміт має унікальний ідентифікатор (SHA — довгий шістнадцятковий хеш, зазвичай показують і використовують перші 7 символів), автора, дату та повідомлення коміту. git log --oneline показує компактніший, однорядковий варіант, зручний для швидкого огляду:
git log --oneline
# a1b2c3d Додати валідацію email у формі реєстрації
# f4e5d6c Виправити стилі кнопки на мобільних
# 9c8b7a6 Початковий комітHEAD — вказівник на коміт, з якого зараз побудована робоча директорія, — типово останній коміт поточної гілки. Багато команд Git (checkout, reset — окремий урок далі) явно чи неявно оперують відносно HEAD.
git diff показує рядки, додані й видалені, порівнюючи два стани — за замовчуванням між робочою директорією та останнім комітом, або явно між двома конкретними комітами:
git diff # незакомічені зміни в робочій директорії
git diff --staged # зміни, вже додані в staging area, ще не закомічені
git diff a1b2c3d f4e5d6c # різниця між двома конкретними комітами- function validate(email) {
- return email.includes("@");
+ function validate(email) {
+ return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);git show <хеш коміту> показує повідомлення коміту разом із точними змінами, які саме він вніс — зручно для дослідження конкретного коміту з історії без порівняння вручну двох сусідніх станів.
git log --author="Ім'я" фільтрує коміти конкретного автора, git log --grep="логін" шукає коміти за текстом повідомлення, git blame файл.js показує, який коміт останнім змінив кожен рядок конкретного файлу — корисно, щоб зрозуміти контекст і причину конкретної зміни коду.
Ігнорувати git diff --staged перед комітом — легко закомітити зміну, яку насправді ще не завершено чи навіть не збиралися включати.
Писати повідомлення коміту на кшталт «fix» чи «wip» без реального опису — git log --oneline через кілька місяців стає марним для розуміння історії проєкту.
Не використовувати git blame при дослідженні незрозумілого рядка коду — часто повідомлення коміту, що його додав, пояснює причину («workaround для бага X»), яку інакше довелось би вгадувати.
git log показує історію комітів (з --oneline для компактного огляду), git diff показує конкретні зміни рядків між станами, git show — деталі одного коміту. HEAD вказує на поточну позицію в історії. Змістовні повідомлення комітів — не формальність, а інвестиція в те, щоб git log і git blame залишались корисними інструментами дослідження проєкту місяці й роки потому.