Используя git, как мне вернуться к первому коммиту, а затем просмотреть историю?

7

Я клонировал проект из Github, и теперь я хочу вернуть его к первому коммиту, как бы я это сделал? Кроме того, как только я вернусь к первому коммиту, как мне перейти ко второму коммиту, а затем со второго на третий и так далее.

new_to_git
источник
1
Дублирование в переполнении стека: Git, вернуться к коммиту с помощью хэша SHA?
Бобби
@Bobby: Ну, в некотором смысле, это обман, но конкретное применение в этом случае, когда вы проходите каждую ревизию в хронологическом порядке, немного отличается. Не так много, хотя.
Даниэль Андерссон
@DanielAndersson: Не совсем, по крайней мере, на мой взгляд. «Проверка конкретной ревизии» не сильно отличается от «Проверка конкретной ревизии и после нее проверка следующей ревизии». Хотя, знание о git logпоможет здесь.
Бобби
Почему вы хотите это сделать? Можете ли вы объяснить, что вы пытаетесь сделать, вместо того, что вы хотите сделать?
KurzedMetal

Ответы:

7

Вы можете проверить любую ревизию, указав ее идентификатор SHA1:

git checkout <SHA1>

Для git-walkэтого был создан вспомогательный скрипт с именем . Даже если вы не будете использовать явный скрипт, посмотрите на (очень простой) код, чтобы увидеть, что сделано.

Даниэль Андерссон
источник
1

Адаптировано из ответа на что является противоположностью git diff HEAD^? :

Во-первых, чтобы впоследствии упростить вашу жизнь, вы можете настроить локальный псевдоним, чтобы найти начальный коммит и дочерний элемент конкретного коммита (Примечание: это не всегда возможно из-за того, как работает DAG )

git config --local alias.first-sha "!git rev-list --all        | tail -n 1"
git config --local alias.child-sha "!git rev-list HEAD..master | tail -n 1"

Затем вы можете оформить первоначальный коммит и пройти по коду, проверив каждого потомка-ша:

git checkout $(git first-sha)
git checkout $(git child-sha)

Если вы новичок в git, я предлагаю прочитать статью о пошаговом коммите, которую я написал, в которой подробно рассказывается о каждой из используемых команд

KyleMit
источник
0

для всех файлов попробуйте

git show HEAD 

для конкретного файла попробуйте

git log -p filename
Чыонг Ха
источник