Подтвердить что ты не робот

Как получить идентификатор фиксации главы мастера в git?

Я хочу отобразить идентификатор фиксации git (т.е. SHA) главы мастера на моем веб-сайте в качестве идентификатора.

Как я могу извлечь эту информацию из git?

4b9b3361

Ответ 1

git rev-parse HEAD вы получите последнюю фиксацию SHA-1.

Ответ 2

Вместо 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"
}

Ответ 3

Следующая команда вернет SHA-1 HEAD:

git log -1 --pretty="%H"

Ответ 4

Чуть менее элегантно:

git log | head -1 | sed s/'commit '//