2013-06-08 5 views
1

Новичкам нужна помощь, чтобы уничтожить беспорядок!Отменить удаленные файлы в git?

Я пытался перевести мой сайт в репозиторий git, поэтому я использовал команду git add. Затем, прежде чем я сделал коммит, я понял, что добавил все из своей корневой папки, а не только из каталога, который я хотел. Поскольку я не хотел делать это, я использовал команду git rm --chached, чтобы удалить все, думая, что я только изменяю то, что было бы нажато git. Я также использовал git clean.

Теперь я понимаю, что эти команды фактически удалили файлы на моем сайте! Что я сделал? Если кто-нибудь может помочь мне вернуть вещи на место, я бы очень признателен. -JB

+1

Есть ли предыдущая фиксация, на которую вы можете вернуться? если да, попробуйте 'git reset --soft origin/master' – amirnissim

+1

Если вы инициализируете git repo, затем добавляете файлы, а затем удаляете их из индекса с помощью' git rm --cached', а затем очищаете 'git clean', все исчезнет, ​​так как в этот момент все ваши файлы неизвестны git, и они удалят их. (читайте man-страницу 'git-clean') – steabert

+0

Кроме того, несмотря на то, что содержимое файла, вероятно, можно извлечь из blob (например,' git fsck -lost-found'), я уверен, что структура каталогов прошло. – steabert

ответ

2

Вы можете сделать

git reset --hard HEAD^ 

Чтобы переместить один шаг назад в истории версий, фактически отменяя последнюю фиксацию, включая все удаления.

Если вы уже толкнули изменения вы можете вместо этого сделать

git revert HEAD 

Для создания нового коммита возвращаясь удаления фиксации, а затем нажмите что.

Этот ответ предполагает, что вы совершили изменения, и это было последнее совершение. Если вы не совершаете изменений, ответ Вилли лучше.

0

Вы пробовали git reset --hard (commit # before this horrible accident)?

затем используйте git pull origin master для извлечения файлов из онлайн-репозитория git, чтобы вернуть ваши файлы.

Более подробное объяснение этого процесса находится на этом SO thread.

2

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

git checkout -f 

Файлы должны быть возвращены!

+1

Это предполагает, что эти изменения никогда не совершались. Мне кажется, что они были совершенны, но это немного неясно. –

+0

@KlasMellbourn да, вы правы. – lvarayut

+0

нет, не было никакого фиксации, но он также говорит, что ветка нерождена. – Dabellator

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