Git·19 питань

Як безпечно повертати зміни у командній роботі?

Відповідь

Відкат змін у командній роботі вимагає обережності — неправильний відкат може затерти чужу роботу або створити конфлікти у всієї команди. Ось безпечні підходи.

git revert — найбезпечніший спосіб. Створює новий коміт, який скасовує зміни вказаного коміту. Історія не переписується, тому безпечний для спільних гілок. Команда git revert <commit-hash> відкочує один коміт. Можна відкотити діапазон: git revert HEAD~3..HEAD створить три revert-коміти. Якщо revert викликає конфлікти (код навколо змінився), вирішіть їх як при звичайному merge.

git reset — переписує історію, використовуйте лише для локальних гілок або гілок, які ніхто не використовує. git reset --hard <commit> переміщує вказівник гілки назад і видаляє всі зміни після цього коміту. Ніколи не робіть reset --hard на гілках, надісланих у remote, якщо інші розробники на них працюють — це створить розбіжності.

git revert vs git reset: revert додає новий коміт скасування — безпечно для всіх. reset видаляє коміти з історії — безпечно лише локально. Правило: якщо гілка в remote і хтось міг зробити pull — використовуйте revert. Якщо гілка локальна або ви єдиний розробник — reset допустимий.

Відкат push: якщо ви вже зробили push небажаних комітів, використовуйте git revert, потім git push. Якщо потрібно видалити коміти з remote (наприклад, випадково запушили секрети), зробіть git reset --hard <останній-хороший-коміт>, потім git push --force-with-lease. Попередьте команду — їм доведеться git fetch і git reset --hard origin/<branch>, бо їхня локальна історія більше не збігається.

Відновлення випадково видалених комітів: git reflog показує історію переміщень HEAD. Знайдіть хеш потрібного коміту і виконайте git reset --hard <hash> — коміт відновиться. Reflog зберігає історію 90 днів за замовчуванням.

Золоте правило: при сумніві — використовуйте revert, а не reset. Revert завжди безпечний, тому що він додає, а не видаляє.

Чи корисна ця відповідь?

Інші питання цієї теми

Пов’язані питання з інших тем