как узнать хэш коммита git

Как вывести текущий хэш коммита git-репозитория в приложении или на веб-сайте

Бывают ситуации, когда запиливаешь новый функционал или правишь старый, тестируешь — всё ок. А выкатываешь на продакшен — ничего не работает и вообще ощущение, будто изменения не накатились. Как быть уверенным, что на продакшене крутится именно тот код, который был на него залит? Одним из решений данной проблемы может стать отображение версии текущего билда. Естественно, номерация версий должна быть не ручной, а автоматической. Если вы используете git для ведения репозитория своего проекта, то в качестве номера версии можно использовать хэш-текущего комита + время комита.

Получить хэш текущего активного комита можно с помощью команды:

А время комита можно получить так:

Формат можно менять, чтобы получить timestamp, нужно указать —format=%ct.

Естественно, все эти команды не нужно дёргать в реалтайме на каждый запрос. Их достаточно вызвать 1 раз во время сборки проекта и записать, например, в файл с константами или в конфиг. Удобно делать такие сборки с помощью утилиты make.

Можно пойти дальше, и вместо некрасивого и непонятного хэша использовать более красивое и семантическое версионирование. Например, с помощью библиотек sebastianbergmann/version или nikolaposa/version.

Читайте также

Work area / stage area / commit reset(—sogt –hard –mixed) vs checkout HEAD Индекс Рабочий Каталог Сохранность РК? На уровне…

Команда git cherry-pick позволяет забрать один коммит из другой ветки и вставить его в текущую. В качестве параметра передаётся идентификатор…

Подборка команд для работы с системой контроля версий git, которые очень пригодятся в повседневной работе программиста. Большая часть команд подойдёт…

Источник

Просмотр истории коммитов в Git

Древовидный вид

Выводим полный граф коммитов c сокращёнными хешами, ссылками на коммиты и относительной датой. Используемый формат: синий сокращённый хеш коммита, зелёная дата, белые сообщение и автор, жёлтые ссылки на коммит.

Выводим полный граф коммитов c сокращёнными хешами, ссылками на коммиты и абсолютной датой. Используемый формат: синий сокращённый хеш коммита, голубая абсолютная дата, зелёная относительная дата, жёлтые ссылки на коммит, перевод строки, белые сообщение и автор.

Выводим полный граф коммитов, отводя по одной строке на коммит.

Выводим полный граф коммитов c сортировкой по дате, отображаемой в краткой форме. Используемый формат: сокращённый хеш, дата, автор, зелёные ссылки на коммит, сообщение.

Линейный вид

Вывод списка коммитов с параметрами по умолчанию.

Выводим список коммитов и показываем diff для каждого.

Выводим список коммитов и показываем статистику по каждому.

Выводим список коммитов по одному на строчке.

Выводим список коммитов с использованием следуюещго формата: сокращённый хеш коммита, автор, относительная дата, сообщение.

Визуальный интерфейс

Если есть возможность, то всё таки коммиты приятнее изучать через специализированный интерфейс, а не из консоли. Лично я очень люблю GitExtensions:

Также удобно использовать встроенную утилиту gitk:

Полезные параметры

Все параметры команды git log не нужны, но некоторые самые полезные хорошо бы помнить. Приведу несколько примеров использования ходовых параметров.

Читайте также:  wb job адреса складов

Источник

Анализ истории изменений (коммитов) — Введение в Git

Программирование — это не только написание нового кода, но и постоянный анализ уже написанного кода. Иногда код понятен и без слов (это хороший код), но так происходит не всегда. Код может вызывать вопросы. Почему он написан именно так, кто его написал и когда.

Ответить на эти вопросы помогает история изменений. Если коммиты сделаны хорошо, то есть они имеют понятное описание, и каждый из них делает ровно одну законченную вещь, то история становится мощным инструментом для анализа кода. Именно поэтому так важно хорошо понимать философию Git и следовать лучшим практикам при работе с ним.

Git предоставляет целую пачку команд со множеством опций, позволяющих вытащить невероятное количество информации и показать всё, что скрыто.

Git Log

Из этого вывода мы можем узнать кто, когда и какие коммиты делал. Если коммиты оформлены хорошо, то по их описанию уже многое понятно. Оформление коммитов — отдельная тема, которую мы рассмотрим позже.

Git Show

У каждого коммита есть идентификатор (говорят «хеш»), уникальный набор символов. С помощью хеша можно посмотреть все изменения, сделанные в рамках одного коммита:

Хеши коммитов в git очень длинные, и ими бывает неудобно пользоваться. Поэтому разработчики git добавили возможность указывать только часть хеша. Достаточно взять первые 8 символов и подставить их в ту команду, которая работает с коммитами:

Чаще всего вам не придётся высчитывать их самим, большая часть команд git выводит хеш коммита в сокращенном варианте, облегчая его использование. Такое упрощение хорошо работает, потому что даже первые 8 символов будут всегда уникальными.

Git Blame

Важно помнить, что изменение строчки — не то же самое, что её написание. Вполне возможно, что программист исправил небольшую опечатку, а саму строку написал кто-то до него. В любом случае, имея такой вывод, уже легко пойти дальше и изучить конкретный коммит.

Git Grep

Github

В простых ситуациях анализировать проект можно прямо на Гитхабе. Он позволяет просматривать историю коммитов, изменения в конкретном коммите и многое другое.

Самостоятельная работа

Дополнительные материалы

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

Об обучении на Хекслете

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

Наши выпускники работают в компаниях:

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Источник

Как получить хэш для текущей фиксации в Git?

Я хотел бы сохранить (на данный момент) возможность связывать наборы изменений Git с рабочими элементами, хранящимися в TFS.

Читайте также:  настройка скорости мыши в windows 10

Я уже написал инструмент (используя крюк от Git), в котором я могу ввести workitemidentifiers в сообщение набора изменений Git.

однако я также хотел бы сохранить идентификатор фиксации Git (хэш) в пользовательском поле TFS workitem. Таким образом, я могу изучить workitem в TFS и посмотреть, какие наборы изменений Git связаны с рабочий объект.

Как я могу легко получить хэш из текущей фиксации от Git?

18 ответов:

чтобы превратить произвольную расширенную ссылку на объект в SHA-1, Используйте просто git-rev-parse, например

Если вы хотите только сокращенный хэш:

кроме того, использование %H-это еще один способ получить длинный хэш.

это очень похоже на @outofculture, хотя и немного короче.

чтобы получить сокращенную версию:

обратите внимание, что git теперь поддерживает хранение некоторых головных ссылок в файле pack-ref вместо файла в папке /refs/heads/. https://www.kernel.org/pub/software/scm/git/docs/git-pack-refs.html

сокращенный хэш фиксации

клик здесь дополнительные git show примеры.

Если вам нужно сохранить хэш в переменной во время скрипта, вы можете использовать

или, если вы хотите только первые 10 символов (например github.com делает)

самый лаконичный способ, который я знаю:

Если вы хотите определенное количество цифр хэша вы можете добавить:

Если вы хотите супер-богатство способ сделать это:

возможно, Вам нужен псевдоним, поэтому вам не нужно запоминать все изящные детали. После выполнения одного из следующих шагов, вы сможете просто ввести:

после принято отвечать, есть два способа это сделать:

1) Научите git явным образом, отредактировав глобальную конфигурацию (мой оригинальный ответ):

2) или если вам нравится ярлык, чтобы научить git ярлык, как недавно прокомментировал Адриен:

С этого момента, используйте git lastcommit чтобы показать хэш последнего коммита.

мне нужно было что-то немного другое: отобразить полный sha1 фиксации, но добавить звездочку до конца, если рабочий каталог не чист. Если я хочу использовать несколько команд, ни один из вариантов в предыдущие ответы.

значительно быстрее, чем любой другой метод, указанный здесь до сих пор.

вот один лайнер в оболочке Bash, используя прямое чтение из файлов git:

вам нужно запустить команду выше в корневой папке git.

этот метод может быть полезен, когда у вас есть файлы репозитория, но git команда не установлена.

in your home-dir in file».gitconfig » добавить следующее

тогда у вас будет более простая команда для запоминания:

Источник

Git для начинающих. Урок 5.
История коммитов в подробностях

Видеоурок

Конспект урока

Краткое содержание урока, основные инструкции для командной строки, полезные ссылки и советы.

Для информации

Урок частично повторяет содержание предыдущего. Но в отличие от прошлого историю коммитов мы рассмотрим намного подробнее.

История коммитов

Команда git log

За просмотр истории коммитов отвечает команда git log. В сочетании с различными параметрами эта команда выводит историю по-разному. Есть много различных вариантов и комбинаций параметров, посмотрим некоторые из них

Читайте также:  петроэлектросбыт на васильевском острове адреса

git log, просмотр истории по умолчанию

Показывает все коммиты от новых к старым. Для каждого коммита выводится

Выводит то же, что и git log, но еще и с изменениями в файлах

Вывод коммитов в одну строку. Показывает только хэш коммита и commit message

Выводит коммиты в виде дерева, в командной строке псевдографикой. Плюс выводит список измененных файлов. К дереву коммитов мы вернемся, когда будем работать с ветками.

Сортировка и фильтрация истории

Есть множество команд, которые позволяют сортировать и фильтровать историю коммитов в командной строке. В том числе в сочетании с линуксовыми командами. Рассмотрим некоторые из них

Поиск по коммитам

Коммиты, затронувшие один файл

Поиск по автору

Поиск по диапазону дат

Комбинация команд и опций

Команды и опции git можно комбинировать и дополнять их линуксовыми командами

Какие еще есть варианты

Мы рассмотрели базовые примеры, но в документации по git log есть много различных опций. Все их рассматривать нет смысла, при необходимости изучайте документацию.

Просмотр отдельного коммита, git show

Чтобы просмотреть отдельный коммит, нужно узнать его хэш. Хэш коммита выводится в любой команде git log, с параметрами или без. Например,

Смотрим второй коммит

Выводится подробная информация о коммите:

Короткий хэш коммита

История коммитов в PhpStorm

В окне Local Changes, на вкладке Log показывается вся история коммитов, в левой половине вкладки. В списке коммитов показываются их commit message, автор и дата. Клик на нужный коммит откроет в правой части вкладки список измененных файлов. Клик на нужном файле и Ctrl/Cmd+D покажет все изменения в этом файле точно так же, как и git diff.

В тексте объяснить работу с историей в PhpStorm сложно, смотрите видеоурок.

Переключение на старый коммит, зачем это нужно

Нужно это обычно в двух случаях:

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

2. При отладке. Когда в код закралась бага и мы постепенно продвигаемся «назад в прошлое» и ищем, в какой момент что-то сломалось

Как переключиться на коммит в терминале

Чтобы вернуться обрано, в исходное состояние, нужно набрать

Как переключаться между коммитами в PhpStrom

Вкладка Log, правый клик на нужном коммите и Checkout Revision. Все. История коммитов будет видна по-прежнему вся, но напротив текущего коммита будет стоять значок HEAD с символом «!»

Что могу посоветовать

На этом все. В следующем уроке мы поговорим о взаимодействии с сервером и познакомимся с командами git push и git pull.

Источник

Образовательный портал