如何在git中获取master主管的提交ID?

Bla*_*man 43 git

我想在我的网站上显示master的head的git commit id(即SHA)作为标识符.

我如何从git中提取这些信息?

Ala*_*avi 74

git rev-parse HEAD 将为您提供最新提交的SHA-1.

  • +1:我认为这种"管道"方法对于OP所要求的基于脚本的解决方案更好,而不是我在下面建议的"瓷器"方法(即"`git log ...`"). (7认同)
  • *[andy](http://stackoverflow.com/users/1889327/andy)*:`git rev-parse master`将为您提供结果. (3认同)

Von*_*onC 30

而不是HEAD SHA1,我宁愿选择git describe,作为获得"构建ID"的更可读的方式.例如:

git describe --abbrev=4 HEAD
Run Code Online (Sandbox Code Playgroud)

如果你不关心标签,并考虑到这git describe是一个不应该在脚本中使用的瓷器命令,那么,git rev-parse(管道命令)更合适.

但同样,如果你要在你的网站上显示一个SHA1作为id,我会选择:

git rev-parse --short HEAD
Run Code Online (Sandbox Code Playgroud)

(为了仅显示SHA1的前7位数)


git rev-parse HEAD(这意味着所有40位数字)仍然有用,当你想检查你刚刚部署的是否确实是HEAD指的是什么.
例如,请参阅此部署脚本:

它首先触发更新:

#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
Run Code Online (Sandbox Code Playgroud)

更新本身刷新网站内容:

# 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
}
Run Code Online (Sandbox Code Playgroud)

然后它用于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"
}
Run Code Online (Sandbox Code Playgroud)


Jee*_*eet 17

以下命令将返回HEAD的SHA-1:

git log -1 --pretty="%H"
Run Code Online (Sandbox Code Playgroud)