Что я сделал:
Я отделил главу моей рабочей ветви 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 ссылок)
Вы создали коммиты на основе patterns_new
когда вы не проверили ветку.
Что хорошо, коммиты все еще там в порядке, но их нет в этой ветке. Ваш коммит Б, 303e50d
является последним коммитом в этой безымянной ветви и последним, в котором есть ваши изменения.
Ваш коммит C, 4835b67
имеет оригинал patterns_new
совершить, dbf4c2863
, как его родитель.
Назовите новую ветку на 303e50d
и объедините его с вашими последними изменениями, и все будет хорошо.
Также обратите внимание, что коммиты никогда не «перезаписываются» и не изменяются каким-либо образом: они не могут быть — хеш не будет совпадать! Вы можете только добавлять новые коммиты или иметь коммиты без веток или мусора, собранные мусором через несколько недель.
Других решений пока нет …