2014-12-23 2 views
0

У нас проблема с git. Мы внесли некоторые локальные изменения и попытались зафиксировать и нажать. Это было совершено, но не вытолкнуто из-за некоторых конфликтов. поэтому мы взяли резервную копию конфликтующих файлов , но пропустили резервное копирование неконфликтных файлов, которые были зафиксированы. Тогда для разрешения конфликтов легко сбросить его:Восстановить файлы, замененные с помощью git reset --hard origin/master

git fetch origin 
git reset --hard origin/master 

с этим файлы были заменены на те, в сервере.

Мой вопрос в том, есть ли способ вернуть замененные файлы?

+0

Пожалуйста, взгляните на http://stackoverflow.com/questions/5788037/recover-from-git-reset-hard –

+0

Вы уверены, что нет способа? – Harikrishnan

+0

@JordanParmer Это говорит о незафиксированных изменениях, этот вопрос касается совершенных изменений. –

ответ

2

Если вы действительно решили, вы должны найти фиксацию при использовании git reflog. Очень сложно потерять фиксации. По умолчанию используется сохранение журналов в течение 30 дней для неподтвержденных коммитов. Поэтому нет необходимости постоянно делать резервные копии, прежде чем пытаться что-то, что может не сработать. Если вам не нравится, вы найдете то, что хотите, с рефлом.

+0

По умолчанию не 30 дней, это две недели (см. ['--prune' в' man git-gc'] (http://git-scm.com/docs/git-gc). Обратите внимание, что очистка происходит только когда запускается 'git-gc', что, возможно, не было более двух недель. –

+0

@AndrewMarshall Более внимательно прочитайте [man page] (http://git-scm.com/docs/git-gc). 2 недели - для свободных объектов, но если ссылка зафиксирована в reflog, она ** не ** освобождена. Срок действия reflog не истекает в течение 30 дней для недостижимых коммитов. Это прямо указано несколько строк ниже в отношении 'gc.reflogExpireUnreachable'. –

+0

@AndrewMarshall' git prune' работает с 'git fsck --unreachable', а fsck по умолчанию проверяет reflogs. – jthill

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