Я хочу отобразить идентификатор фиксации git (т.е. SHA) главы мастера на моем веб-сайте в качестве идентификатора.
Как я могу извлечь эту информацию из git?
Я хочу отобразить идентификатор фиксации git (т.е. SHA) главы мастера на моем веб-сайте в качестве идентификатора.
Как я могу извлечь эту информацию из git?
git rev-parse HEAD
вы получите последнюю фиксацию SHA-1.
Вместо HEAD SHA1 я предпочитаю использовать git describe
, как более читаемый способ для получения "идентификатора сборки". Например:
git describe --abbrev=4 HEAD
Если вам не нравятся теги, и учитывая, что git describe
является фарфоровой командой, которая не должна использоваться в script, то да, git rev-parse
(a команда сантехники) более подходит.
Но опять же, если вы хотите отобразить SHA1 на своем веб-сайте как id, я бы пошел с:
git rev-parse --short HEAD
(Чтобы отображать только первые 7 цифр SHA1)
git rev-parse HEAD
(то есть все 40 цифр) по-прежнему полезно, когда вы хотите проверить, действительно ли то, что вы только что развернули, относится к HEAD
.
См. Например, развертывание script:
Сначала он запускает обновление:
#If requested, perform update before gathering information from repos.
if $update; then
echo "Updating fred-official."
cd "$fredDir"
git_update
if ! [[ "$forceFredID" = "" ]]
then
checkGitID "$forceFredID"
fi
echo "Updating website repo."
cd "$websiteDir"
git_update
if ! [[ "$forceWebsiteID" = "" ]]
then
checkGitID "$forceWebsiteID"
fi
cd "$startingDir"
fi
Само обновление обновляет содержимое веб-сайта:
# Discard any local changes, update remote branches and tags, and
# check out to the latest master branch.
git_update() {
#To update tags and branches.
git remote update
git clean -dfx
git reset --hard origin/master
}
И затем он использует git rev-parse HEAD
, чтобы проверить, что только что было проверено:
function checkGitID {
checkID=$1
echo Checking git ID is "$checkID"
if ! git checkout "$checkID"
then
echo Failed to checkout "$checkID"
exit 4
fi
if ! actualID=$(git rev-parse --verify HEAD)
then
echo Failed to verify "$checkID"
git checkout master
exit 5
fi
if ! [[ "$actualID" = "$checkID" ]]
then
echo Git verification failed, something very bad is happening
exit 6
fi
echo Git ID verified: "$checkID"
}
Следующая команда вернет SHA-1 HEAD:
git log -1 --pretty="%H"
Чуть менее элегантно:
git log | head -1 | sed s/'commit '//