Ходить по истории с мерзавцем? - PullRequest
2 голосов
/ 28 июня 2010

Допустим, я совершил много раз. Теперь я хочу вернуться к определенному коммиту и посмотреть, как выглядел мой рабочий каталог в то время (я действительно хочу, чтобы мой рабочий каталог менялся, когда я это делаю). И, наконец, вернуться к исходной голове, не испортив мои коммиты?!

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

Ответы [ 3 ]

8 голосов
/ 28 июня 2010

Чтобы проверить данный коммит, используйте git checkout:

git checkout <SHA1 of commit>

Чтобы вернуться в исходную ветку, проверьте ее:

git checkout master

Пара замечаний:

  • Если у вас есть незафиксированные изменения, проверка, вероятно, не удастся. Возможно, вы захотите зафиксировать или спрятать их первым.

  • Когда вы проверяете что-то, что не является веткой, вы попадаете в состояние detached HEAD ; то есть ваша ГОЛОВА не относится к ветке - сюрприз! Это означает, что, в частности, если вы сделаете коммит, его не будет на ветке. Не забудьте проверить ветку, если вы хотите зафиксировать. Если вы намереваетесь сделать коммит из того, который вы извлекаете, вы можете проверить его и создать ветку одновременно: git checkout -b new-branch <SHA1 of commit>

1 голос
/ 28 июня 2010

Создание отдельной головы, как в ответе Джефроми, может делать то, что вы хотите.

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

git tag -a -m 'Release 1.0' v1.0 <sha1>

Другие возможности:

  • Создать и переключиться на ветку в этой точке
git checkout -b my-branch-name <sha1>
  • Просмотр содержимого определенного файла из этого коммита
git show <sha1>:foo.c
  • Просмотреть все, что изменилось с момента этой фиксации
git diff <sha1> HEAD
  • Просмотр изменений в определенном файле
git diff <sha1> HEAD -- xyz.cpp
1 голос
/ 28 июня 2010
git checkout <sha of old commit>

Тогда, когда вы закончите, просто git checkout master или где вы хотите быть.

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