Почему изменения коммита git исчезли после двух других коммитов (где я не изменял уязвимый файл)?

Что я сделал:
Я отделил главу моей рабочей ветви MOODLE_27_STABLE. Затем я создал новую ветвь с именем pattern new, проверяя состояние отдельного заголовка с помощью

checkout -b patterns_new

Затем я изменил файл db / upgrade.php 20 октября:
Ссылка на этот коммит, я называю это

Затем, 2 коммитов спустя внезапно эти изменения исчезли в upgrade.php. Но в коммитах не упоминается, что db / upgrade.php был даже модифицирован.

После первого коммита db / upgrade.php остается неизменным
Ссылка на этот коммит, B

Затем после следующего коммита файл db / upgrade.php неожиданно перезаписывается старым коммитом.
[Ссылка на этот коммит, C] [3]

В коммите C вы можете видеть, что ничего не изменилось при просмотре diff. Но при просмотре хранилища на этом этапе истории видно, что коммит A был перезаписан более старым коммитом. (Рядом со строкой 793 добавлений, внесенных в коммит А, больше нет)
[Ссылка на db / upgrade.php на тот момент истории] [4]

То, что я сделал, чтобы полностью заменить MOODLE_27_STABLE ветвью pattern_new (на основе оторванной головы от MOODLE_27_STABLE, было позже, что:

git checkout patterns_new
git merge -s ours MOODLE_27_STABLE
git checkout MOODLE_27_STABLE
git merge patterns_new

(на основе следующего урока [полностью заменить ветку другой веткой] [5])

Теперь я боюсь, что это может быть не единственный коммит, который был перезаписан. Почему это может произойти и как я могу убедиться, что все коммиты в pattern_new «восстановлены»? Должен ли я снова выбрать их всех?

(Мне пришлось удалить ссылки с 3 по 5, потому что я не могу публиковать больше из-за правила stackoverflow «Вам нужно как минимум 10 репутаций, чтобы публиковать более 2 ссылок)

2

Решение

Вы создали коммиты на основе patterns_new когда вы не проверили ветку.

Что хорошо, коммиты все еще там в порядке, но их нет в этой ветке. Ваш коммит Б, 303e50dявляется последним коммитом в этой безымянной ветви и последним, в котором есть ваши изменения.

Ваш коммит C, 4835b67имеет оригинал patterns_new совершить, dbf4c2863, как его родитель.

Назовите новую ветку на 303e50d и объедините его с вашими последними изменениями, и все будет хорошо.

Также обратите внимание, что коммиты никогда не «перезаписываются» и не изменяются каким-либо образом: они не могут быть — хеш не будет совпадать! Вы можете только добавлять новые коммиты или иметь коммиты без веток или мусора, собранные мусором через несколько недель.

1

Другие решения

Других решений пока нет …