Просунуте Git
Amanda Crawford-Adamo
Software and Data Engineer
.git/logs/refs/heads/
| Можливість | Git Reflog | Git Log |
|---|---|---|
| Призначення | Показує оновлення посилань і переписування в локальному репо | Показує лише історію комітів |
| Охоплення | Лише локальний репозиторій | Локальні та віддалені репозиторії |
| Вміст | Усі оновлення посилань (коміти, reset, merge тощо) | Лише коміти |
| Сталість | Тимчасово (зазвичай 90 днів) | Постійно (частина історії репозиторію) |
| Використання | Відновлення втрачених комітів, розуміння недавніх дій | Перегляд історії проєкту, хід розробки фіч |
git reflog
git reflog show
git reflog expire

| Компонент | Опис |
|---|---|
| short-hash | Скорочений хеш коміту |
| ref | Зазвичай HEAD, але можуть бути назви гілок |
| index | Позиція в reflog (0 — найсвіжіший) |
| action | Тип дії (commit, reset, merge тощо) |
| descriptions | Опис дії |
since = показати записи від цього моменту часу
git reflog --since "time-qualifer"
until = показати записи до цього моменту часу
git reflog --until "time-qualifer"
git reflog --since="1 week ago"
git reflog --until="yesterday"
git reflog --until="2024-01-01"
etl-featureЯк відновити гілку etl-feature?
git reflog
git checkout <hash>
git checkout -b <branch-name>
| Тип reset | Команда | Вплив на робочий каталог | Вплив на індекс |
|---|---|---|---|
| Soft | git reset --soft <commit> |
Без змін | Зміни лишаються staged |
| Mixed (типово) | git reset --mixed <commit> |
Без змін | Зміни знімаються зі staging |
| Hard | git reset --hard <commit> |
Зміни відкидаються | Зміни відкидаються |
Як повернутися до попередніх змін ETL-скрипту?
git reflog
git reset --soft HEAD@{1}
Reflog — це наша локальна «машина часу», коли ми помиляємось

Просунуте Git