Перейти к определенной ревизии - PullRequest
453 голосов
/ 24 сентября 2011

Я клонировал git-репозиторий определенного проекта.Могу ли я перевести файлы в исходное состояние и при просмотре файлов перейти к ревизии 2, 3, 4 ... самой последней?Я хотел бы получить общее представление о том, как развивается проект.

Ответы [ 8 ]

695 голосов
/ 24 сентября 2011

Используйте git checkout <sha1> для проверки конкретного коммита.

36 голосов
/ 26 июня 2016

Чтобы перейти к определенной версии / коммиту, выполните следующие команды. Хэш-код вы можете получить от git log --oneline -n 10

git reset --hard HASH-CODE

Примечание - После сброса на определенную версию / коммит вы можете запустить git pull --rebase, если хотите вернуть все коммиты, которые были отброшены.

18 голосов
/ 24 сентября 2011

Вы можете получить графическое представление истории проекта с помощью таких инструментов, как gitk. Просто беги:

gitk --all

Если вы хотите оформить заказ на определенную ветку:

git checkout <branch name>

Для конкретного коммита используйте хэш SHA1 вместо имени ветви. (См. Treeishes в Git Community Book , которая является хорошим чтением, чтобы увидеть другие варианты навигации по вашему дереву.)

git log имеет целый набор параметров для отображения подробной или сводной истории.

Я не знаю простого способа продвинуться вперед в истории фиксации. Проекты с линейной историей, вероятно, не так уж часто встречаются. Идея «ревизии», как у вас с SVN или CVS, не очень хорошо отображает в Git.

5 голосов
/ 16 мая 2016

Используя ключ фиксации SHA1, вы можете сделать следующее:

  • Сначала найдите коммит, который вы хотите для определенного файла:

    git log -n <# commits> <file-name>

    Это на основе вашего <# commits> сгенерирует список коммитов для определенного файла.

    СОВЕТ: если вы не уверены, какой коммит вы ищете, хороший способ узнать это с помощью следующей команды: git diff <commit-SHA1>..HEAD <file-name>. Эта команда покажет разницу между текущей версией коммита и предыдущей версией коммита для определенного файла.

    ПРИМЕЧАНИЕ: ключ SHA1 коммита отформатирован в списке git log -n как:

commit <SHA1 id>

  • Во-вторых, оформить заказ нужной версии:

    Если вы нашли нужный коммит / версию, которую вы хотите, просто используйте команду: git checkout <desired-SHA1> <file-name>

    Это поместит версию файла, которую вы указали, в область подготовки. Чтобы вывести его из зоны подготовки, просто используйте команду: reset HEAD <file-name>

Чтобы вернуться туда, куда указывает удаленный репозиторий, просто используйте команду: git checkout HEAD <file-name>

3 голосов
/ 23 ноября 2012

Я создал инструмент Python для командной строки, чтобы увидеть, как развивается проект.Вы могли видеть, помогает ли это.Инструмент размещен на Git по следующему адресу:

https://github.com/yoganand/git-evolver

1 голос
/ 15 января 2019

Я был в ситуации, когда у нас есть основная ветвь, а затем другая ветвь с именем 17.0, и внутри этой 17.0 был хэш коммита, скажем, "XYZ" . И клиенту дается сборка до этой ревизии XYZ. Теперь мы столкнулись с ошибкой, которая должна быть решена для этого клиента. Таким образом, нам нужно создать отдельную ветку для этого клиента до этого хеш-кода. Вот как я это сделал.

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

  1. git init
  2. git clone После этой команды вы попадете в основную ветку. Так что переключитесь на нужную ветку
  3. git checkout 17.0 Это приведет вас к ветке, где присутствует ваш коммит
  4. git checkout Это займет ваше хранилище до тех пор, пока этот хэш не будет зафиксирован Посмотрите название вашей ветки, которая была заменена на хэш коммита no. Теперь дайте имя ветви этому хешу
  5. git branch ABC Это создаст новую ветку на вашем локальном компьютере.
  6. git checkout ABC
  7. git push origin ABC Это переместит эту ветку в удаленный репозиторий и создаст ветку на git server. Вы сделали.
1 голос
/ 11 января 2017

Я хотел бы упомянуть утилиту командной строки tig, доступную, казалось бы, везде.Это текстово-графическое древовидное представление с отображением тегов и т. Д. Истории изменений проекта.Может использоваться поверх ssh и т. Д. Супер удобный.

1 голос
/ 24 сентября 2011

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

используйте git format-patch <initial revision>, а затем git checkout <initial revision>. Вы должны получить кучу файлов в вашем директоре, начиная с четырех цифр, которые являются патчами.

когда вы закончите читать ревизию, просто наберите git apply <filename>, которая должна выглядеть git apply 0001-* и считать.

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

Руководство git также дает мне следующее:

git show next~10:Documentation/README

Показывает содержимое файла Documentation / README в том виде, в каком оно было текущим в 10-м последнем коммите ветки next.

Вы также можете взглянуть на git blame filename, который дает вам список, где каждая строка связана с хэшем коммита + автором.

...