Я клонировал git-репозиторий определенного проекта. Могу ли я перевести файлы в исходное состояние и при просмотре файлов перейти к ревизии 2, 3, 4 ... самой последней? Я хотел бы получить общее представление о том, как развивался проект.
git
revision
revision-history
xralf
источник
источник
git log -n1
. Но еслиgit checkout
не удалось, это пустая трата усилий.git log
сейчас показывает только первый коммит, могу ли я узнать sha1 следующего коммита?git log --oneline
и вставить вывод в текстовый файл для справки (сокращенные суммы, которые он предоставляет, гарантированно будут уникальными). Другой вариант, если ваша история линейна, это выяснить, сколько существует коммитов от первого коммита доmaster
и использованияgit checkout master~543
(если есть 543 коммитов), затемgit checkout master~542
и т. Д.Для перехода к определенной версии / коммиту выполните следующие команды. Хэш-код вы можете получить от
git log --oneline -n 10
Примечание. После сброса до определенной версии / коммита вы можете запустить
git pull --rebase
, если хотите вернуть все коммиты, которые были отброшены.источник
reset
не только проверяет конкретную точку на графике, но и перемещает вашуreset
, все ожидающие изменения отменяются.git pull --rebase
работает, только если у вас есть пульт для репо, и он в курсе.Вы можете получить графическое представление истории проекта с помощью таких инструментов, как
gitk
. Просто беги:Если вы хотите оформить заказ на конкретную ветку:
Для конкретного коммита используйте хэш 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
списке как:Во-вторых, оформите желаемую версию:
Если вы нашли нужный коммит / версию, которую вы хотите, просто используйте команду:
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 blame filename
список, где каждая строка связана с коммитом хеш + автор.источник
Чтобы получить конкретный зафиксированный код, вам нужен хеш-код этого коммита. Вы можете получить этот хэш-код двумя способами:
git log
и проверьте свои последние коммиты на этой ветке. Он покажет вам хеш-код вашего коммита и сообщение, которое вы оставили во время коммита вашего кода. Просто скопируйте и затем сделайтеgit checkout commit_hash_code
После перехода к этому коду, если вы хотите работать с ним и вносить изменения, вы должны сделать еще одну ветвь
git checkout -b <new-branch-name>
, в противном случае изменения не будут сохранены.источник
Чтобы проверить фиксацию (обратите внимание на прошлое!).
Чтобы жестоко перезапустить коммит и удалить те более поздние ветки, которые вы, вероятно, испортили.
источник