2013-06-23 4 views
1

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

Можно ли сделать какой-то интерактивный разницу между моим фактическим состоянием файла и старым состоянием файла и просто скопировать/вставить материал из старой версии?

+0

git действительно удаляет код (фиксирует) на несколько дней (не знаю точно точное число, хотя), поэтому попробуйте проверить сборщик мусора git. –

+1

@ hus787: git сохраняет все фиксации, включая те, которые удаляют код. Всегда можно вернуться к любому предыдущему фиксации. – Arjan

+0

@ Арьян нет, нет, вы неправильно поняли, что я пытался сказать. Я имел в виду коммиты, которые не являются частью какой-либо отрасли. 'git checkout some_commit' -> внести изменения ->' git commit' -> 'git checkout master' –

ответ

2

Вы можете использовать git checkout с пути:

git checkout fa1afe1 -- some/file.txt 

Это будет перезаписывать some/file.txt с тем, как он выглядел в фиксации fa1afe1, без переключения HEAD. Затем вы можете добавить его с git add или с некоторыми его частями с git add -i, как обычно, и совершить.

Существует также git checkout -p, чтобы переписать только выбранные части в первую очередь.

4

использовать gitk path/filename, чтобы показать только историю этого файла. Внешний diff - простой способ увидеть старые версии для копирования/вставки. Также вы можете выбрать commit commit и использовать его для git revert.

Или просто gitk и используйте фильтр, как «трогательная дорожка» для hilight и навигации. В любой точке фиксации вы можете видеть дерево вместо патча.

И действительно есть слишком много способов ...

0

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

git checkout commitId