Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Чим відрізняється HEAD~1 від HEAD^?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**`HEAD~1`** - це попередній коміт за ланцюгом, а **`HEAD^`** - це батько коміту. **Ключове:** у звичайних (не merge) комітах вони однакові, різниця з'являється тільки при merge, коли `^` дозволяє обрати конкретного батька, а `~` завжди йде по першій лінії історії.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## Коротко - `HEAD~1` - це *попередній коміт за ланцюгом* - `HEAD^` - це *батько коміту* У **звичайних (не merge) комітах** вони **однакові**. Різниця з'являється **тільки при merge**. --- ## `HEAD~1` - крок назад по історії Запис: ```bash HEAD~1 ``` Означає: - «взяти першого батька» - «перейти на один коміт назад» Можна продовжувати: ```bash HEAD~2 HEAD~3 ``` Тобто `~` - це **кількість кроків назад**. --- ## `HEAD^` - батько коміту Запис: ```bash HEAD^ ``` Означає: - «перший батько поточного коміту» Для merge-коміту є кілька батьків: ```bash HEAD^1 # перший батько HEAD^2 # другий батько ``` --- ## Де з'являється різниця (ключовий момент) Уявімо merge-коміт: ``` C---D (feature) / \ A---B-------M (main) ``` - `HEAD` → `M` - `HEAD^1` → `B` (гілка `main`) - `HEAD^2` → `D` (гілка `feature`) - `HEAD~1` → `B` (завжди перший батько) `~` **завжди йде по першій лінії історії**, `^` **дає вибір, якого батька взяти**. --- ## Важливий висновок для співбесіди - `HEAD~1` ≡ `HEAD^` **якщо коміт не merge** - при merge: - `~` - тільки основний шлях - `^` - доступ до конкретних батьків --- ## Коротка таблиця | Запис | Що означає | |---|---| | `HEAD~1` | один коміт назад | | `HEAD~2` | два коміти назад | | `HEAD^` | перший батько | | `HEAD^2` | другий батько (merge) | --- ## Коротка відповідь для співбесіди > `HEAD~1` - це перехід на попередній коміт по основній лінії історії. > `HEAD^` - це батько коміту. У звичайних комітах вони однакові, але при merge `^` дозволяє обрати конкретного батька, а `~` завжди йде по першому. --- ## Часта помилка «Це просто два способи написати одне й те саме» - неправильно. Вони збігаються **тільки в лінійній історії**.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.