проблема с получением предыдущей версии файла - PullRequest
2 голосов
/ 29 марта 2011

Я пытаюсь получить предыдущую версию файла, подобного этому:

git checkout <git-hash>

После этого я вижу, что файл на моем HD - предыдущая версия. Как я могу подтолкнуть эта версия на сервер ??? Я попробовал следующее:

git push ab master

но все, что я получаю, это

Everything up-to-date

Что я делаю не так?


Когда я делаю

git checkout 123456 -- src/test.c

git commit -m "Bringing back test.c from commit 123456"

Я получаю

Not currentyly on any branch

123456 - хеш

Ответы [ 3 ]

2 голосов
/ 29 марта 2011

Когда вы делаете:

git checkout 123456 

, вы находитесь в режиме " отсоединено HEAD", что означает, что на любые внесенные вами изменения нет ссылокот HEAD.
Это объясняет, почему git push говорит: «Все актуально»: вы не находитесь ни в одной ветке, поэтому вы не делали никаких изменений, чтобы их толкать.

Но если выследуйте Отметьте совет и выполните:

git checkout 123456 -- src/test.c

Вы изменяете только рабочее дерево для данного файла, но все еще находитесь в своей текущей ветке.
src/test.c будет изменен, вы можете добавить его и зафиксировать, перемещая HEAD вашей текущей ветки.

2 голосов
/ 29 марта 2011

Я предполагаю, что 123456 - это имя старого коммита, а не имя файла - это не ясно из вопроса, как Бен Хокинг указывает .

Когда вы нажимаете, вы нажимаете полную фиксацию (которая определяет полное состояние дерева), а не отдельные файлы.Команда git push ab master аналогична git push ab master:master, что означает «обновить master на пульте ab с моей версией master».Ошибка «Все актуальное» говорит вам, что вся история вашей master ветви уже содержится в удаленной master ветви.

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

# Make sure that you're back on the master branch first:
git checkout master 

git checkout 123456 -- src/test.c
git commit -m "Bringing back test.c from commit 123456"
git push ab master
0 голосов
/ 29 марта 2011

Является ли 123456 вашим именем файла или хэшем # вашего коммита?Поскольку вы не указали имя файла, я предполагаю, что это имя файла, что означает, что вы извлекли версию, которая была зафиксирована последней.Если предположить, что коммит уже был передан, казалось бы логичным, что все будет обновлено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...