LINUX.ORG.RU

[git] продолбался коммит

 


0

0

Всегда почему-то думал что git устроен так что коммиты если и могут исчезнуть то только после удаления бранча. Причём, так просто удалить бранч если он не смёрджен нельзя.

Однако у меня как-то получилось продолбать коммит. Было два git-репозитория. Удалённый(не bare) и локальный. В каждом из них по несколько бранчей. Потом git начал ругаться что не понимает какой бранч с каким мёрджить при pull. Это я как-то разрулил. И вот после этого один коммит начисто продолбался. Все коммиты просмотрел, gitk всё прошерстил, все бранчи посмотрел, нету нигде. Что я мог сделать не так чтобы добиться такого результата?

★★★★★

И вот сей момент настал, его давно предсказывали, но многие не веровали.

Человек нарвался на коллизию хеш-функции в git-е! Ура!! Дайошь новость на главной!

vnovouhov
()
Ответ на: комментарий от vnovouhov

> Человек нарвался на коллизию хеш-функции в git-е! Ура!! Дайошь новость на главной!

Скорее просто использовал git не понимая/не зная как он работает.

mqspi
()

> И вот после этого один коммит начисто продолбался.

Неплохо бы увидеть кусок графа в исходном репе с этим коммитом и что получилось в другом репе. А то ведь ошибиться можно по-разному, способов просто фантастическое количество.

const86 ★★★★★
()
Ответ на: комментарий от mqspi

> Неплохо бы увидеть кусок графа в исходном репе с этим коммитом и что получилось в другом репе.

Коммита тупо нет. Т.е. в графе на том месте где должен был быть коммит. Вот и вопрос у меня куда он мог деться. Даже если исходить из того что я тупо забыл сделать коммит в "working tree" должны же были остаться файлы с моими изменениями. А там, похоже, результат мёрджа бранчей. Вот в этом и вопрос-по какому сценарию развивались события? Из хистори и git log я не понял где я не прав.

true_admin ★★★★★
() автор топика
Ответ на: комментарий от mqspi

ну, извините, москва не сразу строилась :). Потом пусть кинет в меня камень тот кто скажет что git это просто(шутка). Я же не жаловаться пришёл, я спросил совета. Потом это удар по самомнению. Другие умеют а я не умею? Непорядок :).

PS git-reflog гляну.

true_admin ★★★★★
() автор топика
Ответ на: комментарий от CL-USER

> да, да. мы знаем, что надо было выбирать пистонский меркуриал.

Хорошо, что вы это знаете. А вы знаете, что VCS выбираются не из комплексов^Wжелания доказать свою крутизну?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

> Хорошо, что вы это знаете. А вы знаете, что VCS выбираются не из комплексов^Wжелания доказать свою крутизну?

Да, знаем. Поэтому и выбираем гит. Это очень удобно, надежно ну и плюс "круто" к карме.

CL-USER
()
Ответ на: комментарий от CL-USER

> выбираем гит. Это очень удобно, надежно ну и плюс "круто" к карме.

> "круто"

Всё нормально, не ты один такой.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

tailgunner, считай что это в целях саморазвития и just for fun. Это мой домашний репозиторий где храниться несколько утилит и библиотек.

Потом, чтобы выбрать vcs надо их попробовать. Вот это третье(первым был cvs, потом svn, потом мода на git пошла).

true_admin ★★★★★
() автор топика

Ура! Я нашёл!
Сделал git fsck, ничего не нашёл.
Сделал git fsck --lost-found и нашёл dangling commit.
Сделал git show этого коммита, но там было далеко не всё.
Сделал git checkout этого коммита, глянул git log.
Сделал git show предыдущего коммита и там всё нашлось.

Вопрос к гуру: почему git fsck без --lost-found выдаёт не всё? dangling commit тока он нашёл :(. И вообще нашлось много чего интересного после прогона fsck с разными ключами.

PS git reflog нашёл всё что нужно и, похоже, в хронологическом порядке.

true_admin ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.