git hooks- получить git commit id
Я хочу получить текущий идентификатор git commit из хранилища, либо до того, как пользователь отправит GitHub, либо после клонирования пользователя из GitHub. Этот идентификатор фиксации затем должен быть записан в файл, который также находится в хранилище. Можно ли сделать это, используя любой хук Git?
У меня есть функция C++, которая отображает текущий идентификатор git. Если пользователь загружает (.zip) из моего репозитория, он должен отображать идентификатор фиксации, который присутствовал в GitHub при загрузке. Если они клонируют репозиторий, а затем фиксируют его, git id должен обновляться. Есть ли способ сделать это?
1 ответ
Конечно, вы можете сделать это, не зная почему, но это возможно.
Обратите внимание, git использует ветки, поэтому вы должны знать, какая ветка является вашей основной веткой, давайте предположим, master
,
Использовать
git log
команда с некоторыми опциями для получения идентификатора коммита из удаленного заголовка в вашей главной ветке$ git log origin/master -n 1 --pretty=format:"%H"
Выведите это в файл.
$ git log origin/master -n 1 --pretty=format:"%H" > top_commit.txt
Поместите это в сценарий оболочки, чтобы вы могли использовать его повторно.
Добавьте githook к желаемому событию, которое, я полагаю, будет
pre-commit
, Подробнее об этом см. https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks.
Есть некоторые ограничения на то, что вы можете сделать. Например, я знаю, что вы можете сделать это для предварительной фиксации, но не уверен в необходимости делать это при клонировании. Кроме того, на стороне клиента должны быть установлены githooks. Вам нужно будет написать скрипт, чтобы установить его для ваших пользователей.
ОБНОВИТЬ
Нечто похожее на то, что вы просите, возможно, но не совсем; Я не считаю возможным захватить сделанный коммит и запихнуть его в файл, а затем включить этот файл в тот же коммит.
Кроме того, я не уверен, почему вы хотите сделать это как git log
имеет полную историю произошедшего.
Существуют веские причины для того, чтобы узнать и использовать идентификатор фиксации в HEAD, но нам нужно знать, почему, когда, где, как и т. Д., Чтобы помочь вам в дальнейшем.