2012-05-01 5 views
3

При каких обстоятельствах версия файлов, контролируемых GIT, может искажаться? Это мой вопрос, но вот контекст: я изучаю git и работаю с локальным репозиторием, и сегодня похоже, что несколько файлов были повреждены (или что-то еще). Весь текст выглядит так: ‘Œ…fÅ�ÅˇÅ�õˇÅ�≤ÍÈ (например). Файлы были искажены во всех моментальных снимках git с момента их добавления. Усугубляет ситуацию тот факт, что репо хранилось в Dropbox и также использовалось для хранения веб-файлов для веб-сервера разработки (MAMP). Любая идея, что случилось? Я не нашел ничего полезного в Интернете.Файлы vc'd с GIT искажены

Обновление: теперь похоже, что некоторые файлы просто исчезли; Например, я получил это сообщение, открывающее одно: The alias “test.php” can’t be opened because the original item can’t be found.

Обновление 2: Я думал об этом больше, и я думаю, что я проигнорировал соответствующую деталь, относящуюся к общему вопросу: я переехал .git dir один каталог вверх, то есть на этом пути, Dropbox/Project/gitRepo/, .git-dir перешел из gitRepo в Project. Он совершил без проблем, но затем произошла коррупция между этим событием и некоторыми другими действиями git.

+0

Очень похож на проблему с кодировкой. Вы недавно изменили свой консольный язык? – 9000

+0

Нет, и некоторые файлы были в порядке. См. Обновление. – AlexMA

+1

какие версии git вы используете, и на какой платформе (-ах). Недавно были обновлены поддержка Unicode, и в некоторых случаях вам необходимо обновить репо. Возможно, вам потребуется конвертировать ваш репозиторий, как описано здесь: https://github.com/kblees/git/wiki –

ответ

1

Вы не можете переместить каталог .git таким образом, это должно смутить git, потому что если вы сделали файл foo.php, теперь он стал gitRepo/foo.php.

Теперь, если вы получаете .git каталог обратно, где она принадлежит, вы можете сделать переход вы хотите, как это (я уверен, что я использую функцию, специфичную для Баш оболочки здесь):

Dropbox/Project/gitRepo$ mkdir gitRepo 
Dropbox/Project/gitRepo$ git mv !(gitRepo) gitRepo 
Dropbox/Project/gitRepo$ git ci -m "Move everything in subdir" 
Dropbox/Project/gitRepo$ cd ../.. 
Dropbox$ mv Project/gitRepo Project2 
Dropbox$ cp -r Project/* Project2/ 
Dropbox$ cd Project2 
Dropbox/Project2$ git add . 
Dropbox/Project2$ git ci -m "Import upper directory" 
+0

Спасибо за обновление, но, к сожалению, я не могу проверить это, так как файлы давно ушли, и я даже не помню, какой проект был. – AlexMA

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