Предыдущий ролик Следующий ролик  

Видео урок: Просмотр коммитов

Git: обучение основам

В последнем ролике мы рассмотрели, как получить выгоду от логов коммитов, так что когда мы рассматриваем логи коммитов, мы видим список коммитов. А что если мы хотим рассмотреть конкретный коммит? Мы хотим увидеть, что изменилось. О чем был этот коммит? Я хочу его изучить и понять, что было закоммичено. Это можно сделать при помощи git show, итак, git show, а затем SHA. Давайте это рассмотрим. Пишем git log oneline и получаем список наших коммитов, а теперь давайте покажем один из них, git show, рассмотрим вот этот, где солнечные очки перемещаются выше по списку предложенных принадлежностей для путешествия.

Я просто вставляю сюда SHA и нажимаю Return. Мне показан полный SHA коммита, мне показаны автор и дата, сообщение коммита и суть коммита (то есть разницу между версиями). Помните, мы видели разницу раньше, когда пытались увидеть, что изменилось, прежде чем сделать коммит. Мы можем сравнить два коммита, чтобы увидеть, что изменилось. Вот, Git показывает нам, что было закоммичено, разницу между тем, что было до и что стало после. Вот, солнечные очки появились в этом месте, а в этом месте удалены. Вот в чем состоялось изменение, и вот здесь мы видим плюс и минус, а также изменения показаны другим цветом.

Я могу нажать пробел, чтобы убедиться, что после этого ничего нет, а затем Q, чтобы выйти отсюда. Вот и все, вот на что похожа команда show. Давайте снова посмотрим на наши логи, рассмотрим другой, допустим, тот, где был добавлен файл. Вот на что он похож, git show, а затем SHA, и вот как он выглядит. Здесь добавлен файл, разница здесь - /dev/null, то есть компьютер говорит, что он не существовал до этого, а теперь он здесь. Если сравнить ни с чем, все добавлено, все эти элементы добавлены, все новое.

То же самое происходит, если мы что-то удаляем, все, конечно, будет удалено, и все будет показано с минусами. Конечно, вы можете передать сюда форматы, обычно формат появляется наверху, например, format=, и мы можем написать oneline, а затем передать SHA, я просто напишу HEAD, и вот как выглядит наш HEAD. Давайте взглянем на предыдущий HEAD, а вот тот, что был до этого, и давайте вернемся на два HEAD назад, или HEAD~3, который показывает еще более ранний коммит, так что мы можем возвращаться и смотреть на предыдущие коммиты.

Есть некоторые другие опции, которые вы можете передать. Вы можете посмотреть документацию, чтобы найти их. Теперь, то что мы передаем, это tree-ish объект, как и ранее, но git show на самом деле обрабатывает их немного по-другому. Если мы посмотрим в документации git help show, вы увидите, что эта команда принимает blob, tree, tag и commit, и наиболее часто мы работаем здесь с commit (коммитами). Если мы передадим tree, она покажет имена, находящиеся внутри tree, это эквивалент git ls-tree с опцией name-only, это то же самое.

Для чистых blob, а это файлы, будет показан контекст. Давайте я вам это быстренько покажу. Пишем git ls-tree master, вот наш список. Здесь видны наши активы, я просто беру первую часть и говорю git show это tree. Это tree, на котором мы хотим сфокусироваться, это объект tree-ish, который мы передаем, и Git дает мне список того, что находится тут внутри. Опять же, это то же самое, что и git ls-tree с опцией name-only. Давайте сделаем то же самое с файлом.

Здесь есть файл index, опять же, мы передаем объект tree-ish, git show, а затем мы передаем этот SHA, и вот тут появляется контекст. Я хотел бы отметить, что это не то же самое, что написать git show index.html. Это не tree-ish. Мы не можем это передать. Это не ссылка, которую Git воспринимает как tree-ish объект, поэтому он говорит нам, что он не знает, что это вообще такое. Мы должны передать SHA или какую-то другую ссылку на файл, чтобы он мог понять tree-ish.

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