Перейти к определенной ревизии

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

Ответ 1

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

Ответ 2

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

git reset --hard HASH-CODE

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

Ответ 3

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

gitk --all

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

git checkout <branch name>

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

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

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

Ответ 4

Используя ключ фиксации 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>

Ответ 5

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

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

Ответ 6

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

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

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

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

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

git show next~10:Documentation/README

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

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

Ответ 7

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

Ответ 8

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

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

  1. мерзавец
  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. Вы сделали.

Ответ 9

Чтобы просмотреть все состояние или зафиксировать в репозитории git, выполните

git log --decorate --oneline --graph

Это покажет вам все дерево сверху вниз. Выберите одно коммит и скопируйте его SHA (буквенно-цифровой код, связанный с фиксацией, который также является уникальным), который вы хотите увидеть.

git reset --hard /sha/that/you/choose/

Теперь вы находитесь в этом конкретном коммите.

Чтобы сделать жизнь немного проще использовать Smart Git, который является gui для git... Вы можете проверить на коммиты, которые вы хотите