2012-05-21 3 views
1

У меня есть git repo, у которого есть каталог, полный загруженных пользователем файлов. Каталог также содержит .gitignore */.Игнорируемые файлы GIT, удаленные при удалении

Я сделал попытку удаленного репо, и все эти файлы в каталоге были удалены без предупреждения.

Что могло случиться так?

Все проведенные исследования говорят мне, что это преднамеренное действие для удаления всех этих файлов и невозможности сделать это случайно. Это правда или есть еще одна команда git, которая будет молча удалять все эти файлы?

+0

Предположительно, кто-то удалил их из репо в фиксации. –

+0

Они были проигнорированы, если они не были в удаленном репо – nathanjosiah

+0

Вы * наверняка *, что операция вытаскивания - это то, что удалило эти файлы? –

ответ

2

.gitignore - это удобство, при котором шум не отображается в отчетах о состоянии или автоматически добавляется git add . и т. П., Вот и все. Вы можете явно добавить проигнорированный файл, и git тогда будет заботиться об этом конкретном файле в любом случае, а именование файла в .gitignore не заставит git перестать заботиться об уже отслеживаемом файле.

Если git pull удаленных файлов, то эти файлы были отслежены и удалены. Вы можете вернуть их обратно на git checkout "@{may 21 17:30 pdt}" или на какой-то такой референт для вашей фиксации на момент выталкивания.

Возможно, что кто-то добавил файлы, не зафиксировал изменения и не сработал слияние, что затрудняет поиск сирот, но если кто-то явно не вытерты памяти git git fsck --lost-found, это похоже на старые программы восстановления, это будет бросьте копии всего, о чем вы когда-либо заботились, а затем отбросили на .git/lost-found.

git ls-files -ic --exclude-standard покажет вам отслеженные файлы, соответствующие спецификации игнорирования, то есть файлы, которые кто-то мог добавить или проигнорировать по ошибке. Подумайте об этом, это может быть не очень хорошая линия для крючка с предварительной фиксацией,

git ls-files -ic --exclude-standard \ 
| sed '${p;s,.*,*** '"$0"' refusing commit with tracked files marked as ignored in the standard excludes lists,;q1}' 
+1

Ни один из файлов не был отслежен, поскольку все они были загружены пользователем. Их нет в любом фиксации репо, а каталог '.git/lost-found' не существует. – nathanjosiah

+1

Тогда git pull не удалял их. – jthill

+0

Какая команда удалит их тогда? Я пытаюсь понять это, поскольку я просто унаследовал этот сервер, который неправильно настроил настройки. Я пошел, чтобы вытащить изменения с удаленного репо на сервер, и после этого все пользовательские загрузки исчезли. – nathanjosiah

Смежные вопросы