Ответы:
Используйте git checkout <sha1>для проверки конкретного коммита.
git logсейчас показывает только первый коммит, могу ли я узнать sha1 следующего коммита?
git log --onelineи вставить вывод в текстовый файл для справки (сокращенные суммы, которые он предоставляет, гарантированно будут уникальными). Другой вариант, если ваша история линейна, это выяснить, сколько существует коммитов от первого коммита до masterи использования git checkout master~543(если есть 543 коммитов), затем git checkout master~542и т. Д.
Для перехода к определенной версии / коммиту выполните следующие команды. Хэш-код вы можете получить отgit log --oneline -n 10
git reset --hard HASH-CODE
Примечание. После сброса до определенной версии / коммита вы можете запустить git pull --rebase, если хотите вернуть все коммиты, которые были отброшены.
resetне только проверяет конкретную точку на графике, но и перемещает вашу
reset, все ожидающие изменения отменяются.
git pull --rebaseработает, только если у вас есть пульт для репо, и он в курсе.
Вы можете получить графическое представление истории проекта с помощью таких инструментов, как gitk. Просто беги:
gitk --all
Если вы хотите оформить заказ на конкретную ветку:
git checkout <branch name>
Для конкретного коммита используйте хэш SHA1 вместо имени ветви. (См. Treeishes в Git Community Book , которая хорошо читается, чтобы увидеть другие варианты навигации по вашему дереву.)
git log имеет целый набор параметров для отображения подробной или сводной истории тоже.
Я не знаю простого способа двигаться вперед в истории коммитов. Проекты с линейной историей, вероятно, не так уж часто встречаются. Идея «ревизии», как у вас с SVN или CVS, не очень хорошо отображает в Git.
Используя ключ SHA1 коммита, вы можете сделать следующее:
Сначала найдите коммит, который вы хотите для определенного файла:
git log -n <# commits> <file-name>
Это, основываясь на вашем <# commits>, сгенерирует список коммитов для конкретного файла.
Совет: если вы не уверены в том, что совершает вы ищете, хороший способ выяснить это с помощью следующей команды: git diff <commit-SHA1>..HEAD <file-name>. Эта команда покажет разницу между текущей версией коммита и предыдущей версией коммита для определенного файла.
ПРИМЕЧАНИЕ: ключ SHA1 коммита отформатирован в git log -nсписке как:
совершить
<SHA1 id>
Во-вторых, оформите желаемую версию:
Если вы нашли нужный коммит / версию, которую вы хотите, просто используйте команду: git checkout <desired-SHA1> <file-name>
Это поместит указанную вами версию файла в область подготовки. Чтобы вывести его из области подготовки, просто используйте команду:reset HEAD <file-name>
Чтобы вернуться туда, куда указывает удаленный репозиторий, просто используйте команду: git checkout HEAD <file-name>
Я был в ситуации, когда у нас есть главная ветвь, а затем другая ветвь с именем 17.0, и внутри этой 17.0 был хеш коммита, скажем, "XYZ" . И клиенту дается сборка до этой ревизии XYZ. Теперь мы столкнулись с ошибкой, которая должна быть решена для этого клиента. Поэтому нам нужно создать отдельную ветку для этого клиента до этого хеш-кода. Так вот как я это сделал.
Сначала я создал папку с этим именем клиента на моем локальном компьютере. Скажите, что имя клиента «AAA», как только эта папка создана, выполните следующую команду внутри этой папки:
Один из способов - создать все коммиты, когда-либо сделанные для патчей. Оформите первоначальный коммит и затем примените патчи по порядку после прочтения.
использовать 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список, где каждая строка связана с коммитом хеш + автор.
Чтобы получить конкретный зафиксированный код, вам нужен хеш-код этого коммита. Вы можете получить этот хэш-код двумя способами:
git logи проверьте свои последние коммиты на этой ветке. Он покажет вам хеш-код вашего коммита и сообщение, которое вы оставили во время коммита вашего кода. Просто скопируйте и затем сделайтеgit checkout commit_hash_codeПосле перехода к этому коду, если вы хотите работать с ним и вносить изменения, вы должны сделать еще одну ветвь git checkout -b <new-branch-name>, в противном случае изменения не будут сохранены.
git log -n1. Но еслиgit checkoutне удалось, это пустая трата усилий.