Ответы:
Используйте 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
не удалось, это пустая трата усилий.