Требуются очень конкретные действия, чтобы заставить Git выбрасывать информацию, и даже тогда она не перезаписывает информацию. Так что ситуация может быть не такой, как вы думаете.
Думайте о репозитории Git как о транзакционной базе данных вашего исходного кода. В зависимости от вашей ОС и настроек, это может быть скрытая база данных, поэтому все, что вы видите, это рабочий каталог.
Дело в том: Git использует этот рабочий каталог в вашей локальной файловой системе в качестве браузера для базы данных. Это «представление» может измениться, и запись всех ваших транзакций (фиксаций) будет все еще в репо, без изменений .
Таким образом, рабочий каталог, который вы видите, будет меняться в зависимости от того, какое «представление» (извлечение, обычно ветвь) вы вызывали. Даже копии файлов, которые открыты в вашем текстовом редакторе, могут измениться, что меня очень удивило, когда я впервые это заметил.
Вы можете выбросить предыдущую работу, например:
1. git reset HEAD~2
который выбрасывает вас за последние два коммита или
2. checkout -f
, который отбрасывает незафиксированные изменения в вашем рабочем каталоге (безвозвратно, если они не были git add
ed) перед переходом на другую ветку ('view')
но вы не можете случайно перезаписать информацию, не получив хотя бы предупреждающего сообщения. В большинстве случаев информация все еще находится в репо, пока не будет собрана сборщиком мусора, обычно после более чем 30 дней.
Как сказал Грег, нам нужно больше информации, чтобы знать наверняка.