2016-09-19 23 views
0

Я новичок в git и в настоящее время тестирую различные комбинации, чтобы понять git.Git Hard Reset в одном файле путаница

Я клонировал свой репозиторий, в котором было два файла. Теперь я вносил изменения в один файл (скажем, «first.txt») и передал его на стадию.

После этого шага мне захотелось сбросить «first.txt» на его удаленный экземпляр таким образом, чтобы в моей ветке не присутствовала история git, связанная с «first.txt». Теперь, если я использую -

git checkout origin/master first.txt 

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

Если я использую -

git reset --hard <sha1 commit id> 

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

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

Спасибо, что нашли время, чтобы прочитать мой вопрос!

Если downvoting, то любезно сообщите мне, что еще могло быть улучшено в вопросе.

Благодаря

+0

http://stackoverflow.com/questions/215718/reset-or-revert-a-specific-file-to-a-specific-revision -using-git – Salailah

+0

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

ответ

3

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

git reset --hard origin/master 
git pull origin master 
+0

Но это сбросит все локальные коммиты, сделанные в других файлах. Можем ли мы не просто восстановить один файл из репо, включая его историю? –

+0

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

+1

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