Перейти к конкретной редакции


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

7 346

7 ответов:

использовать git checkout <sha1> чтобы проверить конкретную фиксацию.

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

git reset --hard HASH-CODE

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

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

gitk --all

если вы хотите проверить конкретную ветку:

git checkout <branch name>

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

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

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

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

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

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

  • во-первых, найдите фиксацию, которую вы хотите для конкретного файла:

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

    это, основываясь на вашем <# commits>, создаст список коммитов для конкретного файла.

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

    Примечание: ключ фиксации это алгоритм хеширования SHA-1 в формате как:

commit <SHA1 id>

  • во-вторых, проверьте нужную версию:

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

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

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

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

использовать 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 что дает вам список, где каждая строка связана с хэшем фиксации + автором.

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