TL;DR При изменении коммита не откатывайте изменения в файле полностью, если этот коммит уже мержился в другую ветку.
Иначе, если вы полностью отмените сделанные в файле изменения, то он пропадет из дифа этого коммита, и при повторном мерже с ним ничего не произойдет. Все будет так, как и было в целевой ветке до мержа. git merge
будет говорить Already up-to-date, но содержимое файлов будет разным в этих ветках.
Простой пример из практики. Вы написали console.log
в своей ветке, замержили в стейджинг, задеплоили, потестили, вспомнили, что был лишний код, пошли откатили этот console.log
, замержили в стейджинг снова, все замержилось без конфликтов, но console.log
в стейджинге остался, а у вас в ветке – нет.
Притом это работает в любую сторону на уровне файла. Удалили строку в файле –> замержили куда-то –> вернули ту же строку в файл поменяв коммит –> замержили снова. Там где меняли строка есть, там куда мержили нет. Получается классическая ситуация: “А у меня на ноутбуке все работает, сами ищите что не так!”.
Погнали разбираться ну как так-то
Создадим репозиторий и в нем два файла: