Извините, если об этом уже спрашивали. Я потратил довольно много времени, просматривая старые сообщения SO в Git, но пока не нашел ни одного, который действительно соответствовал бы этому случаю.
Я в команде из 5 разработчиков, использующих Git для проекта. Мы используем его без каких-либо реальных проблем уже около года. Мы настроили Gitosis на общем сервере и выполняем большую часть нашей работы в основной ветке, хотя мы часто делим на побочные ветви новые функции и т. Д.
На этой неделе я видел странное поведение с нашей основной веткой, которое я не понимаю - поведение, которое приводит к потере коммитов и заставляет разработчиков исправлять и вносить изменения, которые уже были сделаны. В первый раз, увидев это, я объяснил это человеческой ошибкой и предположил, что я просто не подтолкнул к основной ветке, как мне казалось. Во второй раз, когда я увидел проблему, мы смогли собрать немного больше информации, оказалось, что система перепутана или что один из наших разработчиков по ошибке сказал git сделать что-то, чего они не понимали.
Вот что мы видим:
Если я смотрю на журнал git, я вижу ВСЕ коммиты. Они в порядке, а коммиты различий верны. Однако, если я посмотрю на текущую версию файла, он не содержит все изменения последних коммитов. То есть журнал показывает коммиты, но в файле нет этих коммитов. Когда я смотрю историю файлов в веб-интерфейсе (я полагаю, что мы используем GitWeb), становится ясно, что GitWeb знает, что самый последний файл НЕ совпадает с самым последним файлом. То есть, рядом с последним коммитом будет добавлена ссылка «diff to current». Два или три коммита назад не имеют ссылки «diff to current», поэтому ясно, что текущая версия файла находится в нескольких коммитах за журналом / последним коммитом.
1) Как / Что могло бы вызвать это? Если бы мы сделали это сами с ошибочной командой, мы бы хотели понять, как этого избежать в будущем.
2) Как это можно починить? Я предполагаю, что если бы можно было явно получить самый последний коммит, но кто сказал, что при этом мы не потеряли работу в других файлах подобным образом. Все это довольно нервирует, так как мы действительно не уверены, что было потеряно на этом этапе.
Большое спасибо за любой совет.