结账源/ <branch> </branch>时如何知道我在git上的分支

时间:2013-06-06 20:04:22

标签: git version-control

我们有一个实际上git fetch; git checkout origin/<branch>部署某个功能的脚本。我们这样做的原因是我们不想避免本地分支(它是测试服务器),因此脚本只需获取最新的更改并签出,然后重新加载服务器。

我们还生成一个日志,描述每个部署,通过电子邮件发送给某人和存档。有趣的是,我们也发送了已部署的分支,但问题是当我们checkout origin/<branch>时,我们正在更改为detached head。我用类似的问题阅读some answers,但没有那么具体。

有没有办法在这种情况下打印我的分支(当然,无论用户输入)?

3 个答案:

答案 0 :(得分:5)

git symbolic-ref --short HEAD应告诉您所在的分支,或者如果您不在某个分支上,则会输出错误。

答案 1 :(得分:1)

这里是git nthlastcheckout,它会从reflog中获取您第n次上次结账时使用的确切字符串(或其最后一个空格后的所有内容):

git config --global alias.nthlastcheckout '!nthlastcheckout'"() {
        git reflog |
        awk '\$3==\"checkout:\" {++n}
             n=='\${1-1}' {print \$NF; exit}
             END {exit n!='\${1-1}'}'
}; nthlastcheckout \"\$@\""

示例:

$ git nthlastcheckout
master
$ git nthlastcheckout 2
v1.3.0^2

答案 2 :(得分:0)

@SébastienDawans指出的对我们来说最好的solutiongit show -s --pretty=%d HEAD。输出类似于remotes/origin/<branch name>,因此可能需要清洁,但是根据我们的需要,它很好。

相关问题